Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hàm tương đương SCOPE_IDENTITY() của SQL Server trong MySQL

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.