SQLite last_insert_rowid() 函数使用指南
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_rowid
VALUES ('Hello'), ('World');
让我们使用 SELECT 语句查看一下表中的数据:
SELECT * FROM test_last_insert_rowid;
txt
-----
Hello
World
由于每个表都有一个默认的 rowid
,因此我们使用以下语句可以显示 rowid
列:
SELECT rowid, * FROM test_last_insert_rowid;
rowid txt
----- -----
1 Hello
2 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 Hello
2 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
语句中使用的值。