MariaDB 函数

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

CREATE TABLE Employee (
  EmpID INT AUTO_INCREMENT PRIMARY KEY, 
  Name VARCHAR(50));

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                0 |
+------------------+

INSERT INTO Employee(Name) Values ('John');

INSERT INTO Employee(Name) Values ('Marry');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                2 |
+------------------+

INSERT INTO Employee(Name) Values ('Kim') , ('Jo');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+

SELECT * FROM Employee;
+-------+-------+
| EmpID | Name  |
+-------+-------+
| 1     | John  |
| 2     | Marry |
| 3     | Kim   |
| 4     | Jo    |
+-------+-------+

SELECT LAST_INSERT_ID(10);
+--------------------+
| LAST_INSERT_ID(10) |
+--------------------+
|                 10 |
+--------------------+

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|               10 |
+------------------+

INSERT INTO Employee(Name) Values ('Ramesh');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                5 |
+------------------+

SELECT * FROM Employee;
+-------+--------+
| EmpID | Name   |
+-------+--------+
| 1     | John   |
| 2     | Marry  |
| 3     | Kim    |
| 4     | Jo     |
| 5     | Ramesh |
+-------+--------+