SQLite
last_insert_rowid()函数返回从当前调用此函数的连接中插入到数据库的最后一行的 ROWID。
ROWID 是表中的行的唯一标识,它是一个 64 位的整数值。您可以使用不区分大小写的
rowid,
oid或者
_rowid_获取到行的 ROWID。除非该表中有显式定义的上述名称的列。
如果一个表中有
INTEGER PRIMARY KEY列,则该列变成 ROWID 的别名。
last_insert_rowid()
语法
这里是 SQLite
last_insert_rowid()函数的语法:
last_insert_rowid()
参数
SQLite
changes()函数不需要任何参数。
返回值
SQLite
last_insert_rowid()函数返回从当前连接中最后查到数据库中的一行的 ROWID,它是一个 64 位整数值。
last_insert_rowid()
实例
隐式的 ROWID 列
为了演示 SQLite
last_insert_rowid()函数的作用,我们使用以下语句创建一个表
test_last_insert_rowid
CREATE TABLE test_last_insert_rowid ( txt VARCHAR(100));
让我们使用下面的语句插入 2 行,
INSERT INTO test_last_insert_rowidVALUES ('Hello'), ('World');让我们使用 SELECT 语句查看一下表中的数据:
SELECT * FROM test_last_insert_rowid;
txt-----HelloWorld
由于每个表都有一个默认的
rowid,因此我们使用以下语句可以显示
rowid列:
SELECT rowid, * FROM test_last_insert_rowid;
rowid txt----- -----1 Hello2 World
让我们使用 SQLite
last_insert_rowid()函数获取最新的 ROWID:
SELECT last_insert_rowid();
last_insert_rowid()-------------------2
这与我们在上面看到的结果一样。
显式的 ROWID 列
如果一个表中有
INTEGER PRIMARY KEY列,则该列变成 ROWID 的别名。比如,我们使用以下语句创建表
test_last_insert_rowid_2:
CREATE TABLE test_last_insert_rowid_2 ( id INTEGER PRIMARY KEY, txt VARCHAR(100));
这里,我们使用了
id列作为主键。按照上面所描述的,
id是
rowid的别名。
让我们插入两行数据:
INSERT INTO test_last_insert_rowid_2 (txt)VALUES ('Hello'), ('World');要查看表中行和每行的 ROWID,请使用以下语句:
SELECT rowid, * FROM test_last_insert_rowid_2;
id id txt-- -- -----1 1 Hello2 2 World
这里, 输出的列名使用了
rowid列的别名
id。
您可以使用一个自定义的
id, 比如:
INSERT INTO test_last_insert_rowid_2 (id, txt)VALUES (123, 'Hello');
要查看最后插入的一行的 ROWID, 请使用以下带有 SQLite
last_insert_rowid()函数的
SELECT语句:
SELECT last_insert_rowid();
last_insert_rowid()-------------------123
它正是我们刚刚在
INSERT语句中使用的值。
