Outdated Version
You are viewing an older version of this section. View current production version.
LAST_INSERT_ID
Returns the last value inserted into an AUTO_INCREMENT column.
Syntax
LAST_INSERT_ID()
Return type
Integer
Remarks
LAST_INSERT_ID()
only returns automatically generatedAUTO_INCREMENT
values. The value ofLAST_INSERT_ID()
remains unchanged if you set theAUTO_INCREMENT
column of a row to a explicit or non-automatically generated value.LAST_INSERT_ID
is maintained on a per-connection basis.- After a multi-insert statement, the value returned by
LAST_INSERT_ID()
is the first value inserted in that group of records. - The value of
LAST_INSERT_ID()
remains unchanged if no record is successfully added in anINSERT
statement. - While using
INSERT IGNORE
if the row is ignored, the value ofLAST_INSERT_ID
remains unchanged. - If the value of
LAST_INSERT_ID
is changed inside a stored procedure, the changed value is seen by statements executed after the procedure call. - If the value of
LAST_INSERT_ID
is changed inside a stored function, the value is restored when the function ends. LAST_INSERT_ID
works withUPDATE
/INSERT
statements, but it may not work as expected withSELECT
statements because of the distributed nature of MemSQL.
Examples
In the following example, LAST_INSERT_ID()
returns 2 when executed after a multi-insert statement, which is the first inserted value in the statement.
CREATE TABLE persons (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
firstname VARCHAR(64),
lastname VARCHAR(64));
INSERT INTO persons VALUES
(NULL, 'Eponymous', 'Bach');
SELECT LAST_INSERT_ID();
****
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
INSERT INTO persons VALUES
(NULL, 'Ping', 'Baudot'),
(NULL, 'Count', 'Modulo'),
(NULL, 'Hugh', 'Rustic');
SELECT LAST_INSERT_ID();
****
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
Following each previous INSERT
statement, the value of LAST_INSERT_ID()
was changed since a NULL
value was inserted in the AUTO_INCREMENT
column.
INSERT INTO persons VALUES (5, 'Grant', 'Acos');
SELECT LAST_INSERT_ID();
****
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+