ฟังก์ชันเทียบเท่า SCOPE_IDENTITY() ของ SQL Server ใน MySQL คือ LAST_INSERT_ID()
รูปแบบไวยากรณ์
SELECT LAST_INSERT_ID();
ฟังก์ชันนี้คืนค่า ID ของแถวที่เพิ่มล่าสุด (AUTO_INCREMENT)
ตัวอย่างการใช้งาน
สร้างตาราง 2 ตาราง:
mysql> create table TestOnLastInsertIdDemo ( StudentId int NOT NULL AUTO_INCREMENT, PRIMARY KEY(StudentId) ); Query OK, 0 rows affected (0.95 sec) mysql> create table TestOnLastInsertIdDemo2 ( Id int NOT NULL AUTO_INCREMENT, PRIMARY KEY(Id) ); Query OK, 0 rows affected (2.79 sec)
เพิ่มข้อมูล 8 แถวในตารางที่ 2:
mysql> insert into TestOnLastInsertIdDemo2 values(),(),(),(),(),(),(),(); Query OK, 8 rows affected (0.21 sec)
สร้าง Trigger บนตารางแรก ที่เมื่อมีการ INSERT จะเพิ่มข้อมูลในตารางที่ 2:
mysql> delimiter // mysql> create trigger insertingTrigger after insert on TestOnLastInsertIdDemo FOR EACH ROW BEGIN INSERT INTO TestOnLastInsertIdDemo2 VALUES(); END // Query OK, 0 rows affected (0.19 sec) mysql> delimiter ;
เพิ่มข้อมูลในตารางแรก 1 แถว:
mysql> insert into TestOnLastInsertIdDemo values(); Query OK, 1 row affected (0.31 sec)
ตรวจสอบ LAST_INSERT_ID():
mysql> select last_insert_id();
ผลลัพธ์:
+------------------+ | last_insert_id() | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec)
คืนค่า 1 เพราะ LAST_INSERT_ID() ใช้ตารางต้นทาง ไม่ใช่ตารางภายใน Trigger