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 语句中使用的值。