MySQL 函数

如果没有参数,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 |
+-------+--------+