在本教學中,您將學習如何使用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
函數來獲取插入到表中的最後一行的序列號。