Nhận xét làm rõ của bạn cho biết rằng bạn quan tâm đến việc đảm bảo rằng LAST_INSERT_ID () không đưa ra kết quả sai nếu một INSERT đồng thời khác xảy ra. Hãy yên tâm rằng có thể sử dụng LAST_INSERT_ID () an toàn bất kể hoạt động đồng thời khác. LAST_INSERT_ID () chỉ trả về ID gần đây nhất được tạo trong phiên hiện tại.
Bạn có thể tự mình thử:
- Mở hai cửa sổ shell, chạy mysqlclient trong mỗi cửa sổ và kết nối với cơ sở dữ liệu.
- Shell 1:INSERT vào một bảng với khóaAUTO_INCREMENT.
- Shell 1:SELECT LAST_INSERT_ID (), xem kết quả.
- Shell 2:INSERT vào cùng một bảng.
- Shell 2:SELECT LAST_INSERT_ID (), xem kết quả khác với shell 1.
- Shell 1:SELECT LAST_INSERT_ID () một lần nữa, xem kết quả lặp lại trước đó.
Nếu bạn nghĩ về nó, đây là cách duy nhất có ý nghĩa. Tất cả các cơ sở dữ liệu hỗ trợ cơ chế khóa tự động tăng dần đều phải hoạt động theo cách này. Nếu kết quả phụ thuộc vào điều kiện chạy đua với các ứng dụng khách khác có thể CHÈN đồng thời, thì sẽ không có cách nào đáng tin cậy để nhận giá trị ID được chèn cuối cùng trong phiên hiện tại của bạn.