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
UPDATEthay vào đó, câu lệnh trên hàng hiện cóINSERTtuyê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.