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() 是一个内置函数,它返回自动增长列为最后一次插入生成的值。