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

Ý nghĩa của SELECT @@identity trong MySQL

@@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_INCREMENT của bản ghi INSERT gần nhất (John)
  • @@identity là 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.