@@identity (hoặc LAST_INSERT_ID()) trả về giá trị AUTO_INCREMENT mới nhất được sinh ra trong phiên kết nối (session) hiện tại.
Ví dụ minh họa
Tạo bảng với khóa chính AUTO_INCREMENT:
mysql> create table DemoTable(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(100)
);
Chèn 5 bản ghi (không chỉ định UserId):
mysql> insert into DemoTable(UserName) values('David');
mysql> insert into DemoTable(UserName) values('Mike');
mysql> insert into DemoTable(UserName) values('Carol');
mysql> insert into DemoTable(UserName) values('Robert');
mysql> insert into DemoTable(UserName) values('John');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | David | | 2 | Mike | | 3 | Carol | | 4 | Robert | | 5 | John | +--------+----------+
Truy vấn @@identity
mysql> select @@identity;
Kết quả:
+------------+ | @@identity | +------------+ | 5 | +------------+
Giải thích:
- Giá trị 5 là
AUTO_INCREMENTcủa bản ghi INSERT gần nhất (John) @@identitylà biến hệ thống (system variable), phạm vi session- Tương đương
LAST_INSERT_ID()(hàm) - khuyến nghị dùng hàm này vì chuẩn SQL hơn - Không bị ảnh hưởng bởi INSERT của session khác
Ứng dụng: Lấy ID vừa sinh để insert vào bảng liên quan (foreign key), trả về API sau khi tạo tài nguyên, logging, audit trail.