有没有办法获取SQLite3中特定表的最后插入的rowid?有一个函数 last_insert_rowid 返回最近一次成功插入 rowid 表或虚拟表的 rowid。但是,我想知道是否有这样的方法来获取特定表的最后插入的rowid。
所有表最后插入的
rowid
都存储在内部表sqlite_sequence
中,您可以像查询其他表一样查询该表。确保您的主键 ID 具有属性 autoincrement
,否则不会在那里列出。
sqlite> create table Test1 (id integer primary key autoincrement, text string);
sqlite> create table Test2 (id integer primary key autoincrement, text string);
[...] -- Insert rows here
sqlite> select rowid from Test1;
id
----------
1
2
sqlite> select rowid from Test2;
id
----------
1
2
3
sqlite> select * from sqlite_sequence;
name seq
---------- ----------
Test1 2
Test2 3
下面可能是最简单、最可靠的方法 - 只需使用带有 RowId 的 Returning 子句即可:
insert into MyTable (Column1, Column2) Values (Val1, Val2) Returning RowId;