在本教程中,您将学习如何使用MySQL LAST_INSERT_ID
函数来获取最后插入行的生成序列号。
MySQL LAST_INSERT_ID函数简介
在数据库设计中,我们经常使用代理键使用AUTO_INCREMENT
属性为主键列生成唯一的整数值。
当您将新行插入到具有AUTO_INCREMENT
列的表中时,MySQL会自动生成一个唯一的整数,并将其作为主键列的值。
有关如何设置列的AUTO_INCREMENT
属性的更多信息,请查看MySQL序列教程。
您可以使用MySQL LAST_INSERT_ID
函数获取生成的序列号,并此数字值使用在下一个语句中,例如:将其值作为新行的一个值插入到相关表中。
MySQL LAST_INSERT_ID示例
我们来看一下使用MySQL LAST_INSERT_ID
函数的例子。
首先,创建一个名为tbl
的新表进行测试。在tbl
表中,在id
列上设置了AUTO_INCREMENT
属性。
USE testdb;
CREATE TABLE tbl (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(250) NOT NULL
);
其次,向tbl
表中插入一个新行记录。
INSERT INTO tbl(description)
VALUES('MySQL last_insert_id');
第三步,使用MySQL LAST_INSERT_ID
函数来获取MySQL生成的最后一个插入ID的值。
mysql> SELECT LAST_INSERT_ID() as lastID;
+--------+
| lastID |
+--------+
| 1 |
+--------+
1 row in set
需要注意的是,如果使用单个INSERT语句将多行插入到表中,则LAST_INSERT_ID
函数将返回第一行的最后一个插入ID。
假设AUTO_INCREMENT
列的当前值为1
,并在表中插入3
行。当您使用LAST_INSERT_ID
函数获取最后一个插入ID
时,将获得2
而不是4
。
以下语句将向tbl
表中插入3
行,并使用LAST_INSERT_ID
函数获取最后一个插入ID值。
mysql> INSERT INTO tbl(description)
VALUES('record 1'),
('record 2'),
('record 3');
SELECT LAST_INSERT_ID();
Query OK, 3 rows affected
Records: 3 Duplicates: 0 Warnings: 0
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
1 row in set
查看tbl
表的数据:
mysql> SELECT * FROM tbl;
+----+----------------------+
| id | description |
+----+----------------------+
| 1 | MySQL last_insert_id |
| 2 | record 1 |
| 3 | record 2 |
| 4 | record 3 |
+----+----------------------+
4 rows in set
LAST_INSERT_ID
函数基于客户端独立原则。这意味着特定客户端的LAST_INSERT_ID
函数返回的值是该客户端生成的值。这样就确保每个客户端可以获得自己的唯一ID。
在本教程中,我们向您展示了如何使用MySQL LAST_INSERT_ID
函数来获取插入到表中的最后一行的序列号。