Tôi tin rằng câu trả lời cho điều này được giải quyết trong MySQL tài liệu :
Nếu bảng chứa AUTO_INCREMENT
cột và INSERT
... UPDATE
chèn một hàng, LAST_INSERT_ID()
hàm trả về AUTO_INCREMENT
giá trị. Nếu câu lệnh cập nhật một hàng thay thế, LAST_INSERT_ID()
không có ý nghĩa. Tuy nhiên, bạn có thể giải quyết vấn đề này bằng cách sử dụng LAST_INSERT_ID(expr)
. Giả sử id đó là AUTO_INCREMENT
cột. Để tạo LAST_INSERT_ID()
có ý nghĩa đối với các bản cập nhật, hãy chèn các hàng như sau:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;