MariaDB LAST_INSERT_ID() 函数使用指南
在 MariaDB 中,LAST_INSERT_ID()
是一个内置函数,它返回自动增长列为最后一次插入生成的值。
MariaDB LAST_INSERT_ID()
语法
这里是 MariaDB LAST_INSERT_ID()
函数的语法:
LAST_INSERT_ID()
LAST_INSERT_ID(expr)
参数
expr
- 可选的。 一个表达式,它应该返回一个整数。
返回值
如果没有参数,LAST_INSERT_ID()
函数返回自动增长列为最后一次插入生成的值。
如果有参数,LAST_INSERT_ID()
函数返回该参数的值,并将此值记住为 LAST_INSERT_ID()
函数返回的下一个值。
如果使用单个 INSERT
语句插入多行,LAST_INSERT_ID()
仅返回为第一个插入的行生成的值。
LAST_INSERT_ID()
示例
下面的示例展示了如何使用 LAST_INSERT_ID()
函数。
首先,让我们创建一个表 test_last_insert_id
:
CREATE TABLE test_last_insert_id(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
s VARCHAR(30) NOT NULL
);
让我们插入 1 行以供测试:
INSERT INTO test_last_insert_id (s) VALUES ('a');
让我们查询一下表中的数据:
SELECT * FROM test_last_insert_id;
输出:
+----+---+
| id | s |
+----+---+
| 1 | a |
+----+---+
让我们通过 LAST_INSERT_ID()
函数获取最后插入的自增列的值:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
让我们插入 2 行以供测试:
INSERT INTO test_last_insert_id (s) VALUES ('b'), ('c');
让我们查询一下表中的数据:
SELECT * FROM test_last_insert_id;
输出:
+----+---+
| id | s |
+----+---+
| 1 | a |
| 2 | b |
| 3 | c |
+----+---+
让我们通过 LAST_INSERT_ID()
函数获取最后插入的自增列的值:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
这里,您可能会问结果为什么是 2 而不是 3 ? 这是因为,如果使用单个 INSERT
语句插入多行,LAST_INSERT_ID()
仅返回为第一个插入的行生成的值。
现在,让我们为 LAST_INSERT_ID()
函数提供一个参数:
SELECT LAST_INSERT_ID(10);
输出:
+--------------------+
| LAST_INSERT_ID(10) |
+--------------------+
| 10 |
+--------------------+
让我们调用没有参数的 LAST_INSERT_ID()
函数:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 10 |
+------------------+
此时, LAST_INSERT_ID()
函数返回了上次调用时的参数。
让我们再次插入 1 行以供测试:
INSERT INTO test_last_insert_id (s) VALUES ('d');
让我们再次调用 LAST_INSERT_ID()
函数:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 4 |
+------------------+
此时, LAST_INSERT_ID()
函数返回了自增列的最后一个 ID。
结论
在 MariaDB 中,LAST_INSERT_ID()
是一个内置函数,它返回自动增长列为最后一次插入生成的值。