有没有办法在SQLite3中获取特定表的最后插入的rowid?有一个函数last_insert_rowid,它将最近成功的查询的rowid返回到rowid表或虚拟表中。但是,我想知道是否有这样一种方法来获取特定表的最后插入的rowid。
cnjp1d6j1#
所有表中最后插入的rowid存储在内部表sqlite_sequence中,您可以像查询任何其他表一样查询该表。请确保您的主键ID具有属性autoincrement,否则它不会在那里列出。
rowid
sqlite_sequence
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
rryofs0p2#
下面可能是最简单和最可靠的方法-只需将Returning子句与RowId一起使用:
Returning
RowId
insert into MyTable (Column1, Column2) Values (Val1, Val2) Returning RowId;
2条答案
按热度按时间cnjp1d6j1#
所有表中最后插入的
rowid
存储在内部表sqlite_sequence
中,您可以像查询任何其他表一样查询该表。请确保您的主键ID具有属性autoincrement
,否则它不会在那里列出。rryofs0p2#
下面可能是最简单和最可靠的方法-只需将
Returning
子句与RowId
一起使用: