如果没有参数,MySQL LAST_INSERT_ID() 函数将返回第一个自动生成的值,该值是最近执行的 INSERT 语句的结果,为 AUTO_INCREMENT 列成功插入。 如果没有成功插入行,则 LAST_INSERT_ID() 的值保持不变。
如果有参数,此函数将返回表达式的值以及下一次调用 LAST_INSERT_ID() 的值将返回相同的值。
语法
LAST_INSERT_ID(expression)
参数
expression | 可选。 如果指定,则返回表达式的值,并将其记住为 LAST_INSERT_ID() 函数返回的下一个值。 |
返回值
返回表中已插入或更新的最后一行的 AUTO_INCREMENT ID。
示例:
考虑下面的示例,其中创建了一个名为 Employee 的表,其中包含一个名为 EmpID 的 AUTO_INCREMENT 字段。创建表后,使用LAST_INSERT_ID()函数获取各种场景下的AUTO_INCRMENT ID。
mysql> CREATE TABLE Employee (
EmpID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50));
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 0 |
+------------------+
mysql> INSERT INTO Employee(Name) Values ('John');
mysql> INSERT INTO Employee(Name) Values ('Marry');
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
mysql> INSERT INTO Employee(Name) Values ('Kim') , ('Jo');
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 3 |
+------------------+
mysql> SELECT * FROM Employee;
+-------+-------+
| EmpID | Name |
+-------+-------+
| 1 | John |
| 2 | Marry |
| 3 | Kim |
| 4 | Jo |
+-------+-------+
mysql> SELECT LAST_INSERT_ID(10);
+--------------------+
| LAST_INSERT_ID(10) |
+--------------------+
| 10 |
+--------------------+
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 10 |
+------------------+
mysql> INSERT INTO Employee(Name) Values ('Ramesh');
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 5 |
+------------------+
mysql> SELECT * FROM Employee;
+-------+--------+
| EmpID | Name |
+-------+--------+
| 1 | John |
| 2 | Marry |
| 3 | Kim |
| 4 | Jo |
| 5 | Ramesh |
+-------+--------+