เมื่อใช้คอลัมน์ AUTO_INCREMENT สามารถดึง ID ของแถวที่เพิ่มล่าสุดได้ด้วยฟังก์ชัน LAST_INSERT_ID()
รูปแบบคำสั่ง
SELECT LAST_INSERT_ID();
ตัวอย่างเต็ม
1. สร้างตาราง
mysql> create table LastInsertedRow (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(20),
-> UserAge int
-> );
2. เพิ่มข้อมูล 6 แถว
mysql> insert into LastInsertedRow(UserName,UserAge) values('John',23);
mysql> insert into LastInsertedRow(UserName,UserAge) values('Carol',24);
mysql> insert into LastInsertedRow(UserName,UserAge) values('Bob',24);
mysql> insert into LastInsertedRow(UserName,UserAge) values('Larry',26);
mysql> insert into LastInsertedRow(UserName,UserAge) values('Maxwell',27);
mysql> insert into LastInsertedRow(UserName,UserAge) values('David',22);
3. ดู ID ล่าสุด
mysql> select last_insert_id();
+------------------+ | last_insert_id() | +------------------+ | 6 | +------------------+
4. ดึงแถวทั้งหมดของ ID ล่าสุด
mysql> select * from LastInsertedRow where Id=(SELECT LAST_INSERT_ID());
+----+----------+---------+ | Id | UserName | UserAge | +----+----------+---------+ | 6 | David | 22 | +----+----------+---------+
ข้อสังเกตสำคัญ
LAST_INSERT_ID()เฉพาะต่อการเชื่อมต่อ (connection) นั้นๆ ไม่กระทบโดยผู้ใช้คนอื่น- ทำงานได้แม้มีการ INSERT หลายแถวพร้อมกัน - จะคืนค่า ID แรกของชุดนั้น
- ในโปรแกรมภายนอก (PHP, Java, Python) ใช้ API ของ driver แทน (เช่น
mysqli_insert_id()ใน PHP) - ไม่ทำงานกับคอลัมน์ที่ไม่ใช่ AUTO_INCREMENT