Tương đương với SCOPE_IDENTITY() của SQL Server là LAST_INSERT_ID() trong MySQL.
Cú pháp:
SELECT LAST_INSERT_ID().
Hàm này trả về ID của bản ghi vừa chèn.
Demo: Tạo 2 bảng.
TestOnLastInsertIdDemo
mysql> create table TestOnLastInsertIdDemo -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(StudentId) -> ); Query OK, 0 rows affected (0.95 sec)
TestOnLastInsertIdDemo2
mysql> create table TestOnLastInsertIdDemo2 -> ( -> Id int NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (2.79 sec)
Chèn 8 bản ghi vào bảng 2:
mysql> insert into TestOnLastInsertIdDemo2 values(),(),(),(),(),(),(),(); Query OK, 8 rows affected (0.21 sec) Records: 8 Duplicates: 0 Warnings: 0
Tạo trigger trên bảng TestOnLastInsertIdDemo2:
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 ;
Chèn bản ghi vào TestOnLastInsertIdDemo:
mysql> insert into TestOnLastInsertIdDemo values(); Query OK, 1 row affected (0.31 sec)
Gọi LAST_INSERT_ID():
mysql> select last_insert_id();
+------------------+ | last_insert_id() | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec)
Kết quả trả về 1 vì LAST_INSERT_ID() chỉ lấy ID từ bảng gốc, không tính bảng trong trigger.