LAST_INSERT_ID() returns the first automatically generated value set for an AUTO_INCREMENT column : LAST_INSERT_ID « Information Functions « MySQL Tutorial






If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.

mysql>
mysql> CREATE TABLE t (
    ->  id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->  name VARCHAR(10) NOT NULL
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql>
mysql> INSERT INTO t VALUES (NULL, 'Bob');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
|  1 | Bob  |
+----+------+
1 row in set (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)

mysql>
mysql> INSERT INTO t VALUES (NULL, 'Mary'),
    ->                      (NULL, 'Jane'),
    ->                      (NULL, 'Lisa');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>
mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
|  1 | Bob  |
|  2 | Mary |
|  3 | Jane |
|  4 | Lisa |
+----+------+
4 rows in set (0.00 sec)

mysql>
mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

mysql>
mysql> drop table t;
Query OK, 0 rows affected (0.00 sec)








20.10.LAST_INSERT_ID
20.10.1.LAST_INSERT_ID() returns the first automatically generated value set for an AUTO_INCREMENT column
20.10.2.LAST_INSERT_ID(expr)