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

Tác động của INSERT nhiều hàng lên kết quả LAST_INSERT_ID() trong MySQL?

Như chúng ta biết, hàm MySQL LAST_INSERT_ID() trả về số dãy mới nhất được sinh ra, nhưng trong trường hợp chèn nhiều hàng, nó sẽ trả về số dãy được sinh ra bởi hàng đầu tiên được chèn.

Ví dụ

mysql> INSERT INTO Student(Name) VALUES('Ram'),('Mohan'),('Aryan');
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0

Truy vấn trên chèn 3 giá trị vào bảng Student với INSERT nhiều hàng. Giá trị cột 'Id' có thể kiểm tra bằng truy vấn sau:

mysql> SELECT * FROM Student;
+----+-------+
| Id | Name  |
+----+-------+
| 1  | Raman |
| 2  | Rahul |
| 3  | Ram   |
| 4  | Mohan |
| 5  | Aryan |
+----+-------+
5 rows in set (0.00 sec)

Điều đó có nghĩa Last_Insert_Id() phải trả về 5 nhưng như ta thấy nó trả về giá trị 3 như sau:

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 3                |
+------------------+
1 row in set (0.00 sec)

Nó trả về giá trị 3 vì 3 là giá trị của hàng được chèn đầu tiên trong truy vấn INSERT nhiều hàng trên.