INSERT INTO … ON DUPLICATE KEY UPDATE
hoạt động theo cách này:
- nó cố gắng chèn một hàng như bình thường
- nếu có bất kỳ vi phạm ràng buộc nào trong bất kỳ cột nào xảy ra, nó sẽ thực thi
UPDATE
thay vào đó, câu lệnh trên hàng hiện cóINSERT
tuyên bố xung đột
Điều đó đơn giản có nghĩa là nếu UPDATE
một mình câu lệnh sẽ thành công, ON DUPLICATE KEY UPDATE
của nó tương đương cũng sẽ hoạt động. Điều đó có nghĩa là bạn rõ ràng không thể vi phạm bất kỳ ràng buộc nào trong UPDATE
một trong hai câu lệnh hoặc toàn bộ điều sẽ không thành công (ví dụ:cố gắng đặt giá trị trên UNIQUE
cột đã tồn tại trong một hàng khác).
Nếu bạn đặt lại cùng một giá trị trên cùng một cột, đó về cơ bản là không chọn. Giá trị trong cột không thay đổi và do đó cũng không thể gây ra bất kỳ lỗi nào (giả sử bạn không có bất kỳ BEFORE UPDATE
nào thực sự thú vị kích hoạt có thể hoạt động sai). Ở đây, số lượng cột không liên quan, bạn có thể thay đổi bao nhiêu hoặc ít trong một câu lệnh tuỳ thích.