Tôi nghĩ câu trả lời cho câu hỏi của tôi là hiển nhiên nhưng vì tôi không thể tìm thấy bất kỳ tài liệu nào để hỗ trợ nó, tôi nghĩ nó đáng được hỏi. Ít nhất là cho bản ghi.Hành vi AUTO_INCREMENT của MySQL trong một hàng chèn
Như chúng ta đều biết, các trường AUTO_INCREMENT
được tăng lên mỗi khi câu lệnh INSERT
được thực thi. Và giá trị của nó có thể được lấy bởi hàm LAST_INSERT_ID()
. Nó cũng được đề cập trong MySQL's Manual rằng với chèn nhiều hàng, LAST_INSERT_ID()
sẽ trả về ID đầu tiên của các hàng được chèn. Mà tôi nghĩ là một ý tưởng hay (thực sự hữu ích).
Vì vậy, ở đây đi câu hỏi của tôi:
Tôi có thể giả định trong một tuyên bố INSERT IGNORE INTO
với nhiều hàng, các ID chèn của một trường AUTO_INCREMENT
sẽ luôn luôn được liên tục? Hãy nhớ rằng do sửa đổi IGNORE
và tính chất đa người dùng của máy chủ MySQL, các kịch bản khác nhau có thể xảy ra.
Cảm ơn.
Làm thế nào về 'modifier ignore', làm các hàng trùng lặp tạm ứng bộ đếm mặc dù chúng được lắp vào? Tôi hỏi điều này bởi vì tôi đã thấy rằng trong các câu lệnh 'INSERT' hàng đơn lẻ mà không có biến tố' IGNORE', bộ đếm được tăng lên khi một số lỗi xảy ra, mặc dù hàng không được chèn vào! – Mehran
Mehran Ziadloo: Tôi vừa thực hiện kiểm tra để chắc chắn và các ID là tuần tự. – Mchl
Lỗi của tôi, sử dụng công cụ sửa đổi 'IGNORE' sẽ không tăng bộ đếm. Đó là cho các hàng mà các lỗi key_ _duplicate được chuyển thành cảnh báo. – Mehran