MySQL LAST_INSERT_ID() 函数

MySQL LAST_INSERT_ID() 函数返回自动增长列为最后一次插入生成的值。

LAST_INSERT_ID() 语法

这里是 MySQL LAST_INSERT_ID() 函数的语法:

LAST_INSERT_ID(expr)

参数

expr
可选的。 一个表达式,它应该返回一个整数。

返回值

如果没有参数,LAST_INSERT_ID() 函数返回自动增长列为最后一次插入生成的值。

如果使用单个 INSERT 语句插入多行,LAST_INSERT_ID() 仅返回为第一个插入的行生成的值。

如果有参数,LAST_INSERT_ID() 函数该参数的值,并将此值记住为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() 仅返回为第一个插入的行生成的值。