Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เข้าถึงแถวที่เพิ่มล่าสุดใน MySQL

เมื่อใช้คอลัมน์ 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