INSERT INTO … ON DUPLICATE KEY UPDATE bekerja dengan cara ini:
- ia mencoba menyisipkan baris seperti biasa
- jika terjadi pelanggaran batasan di kolom mana pun, ia akan mengeksekusi
UPDATEpernyataan sebagai gantinya pada baris yang ada dengan yangINSERTpernyataan bentrok
Itu berarti jika UPDATE pernyataan saja akan berhasil, ON DUPLICATE KEY UPDATE setara juga akan bekerja. Itu berarti Anda jelas tidak dapat melanggar batasan apa pun dalam UPDATE pernyataan baik, atau semuanya akan gagal (misalnya mencoba menetapkan nilai pada UNIQUE kolom yang sudah ada di baris lain).
Jika Anda menetapkan nilai yang sama pada kolom yang sama lagi, itu pada dasarnya adalah larangan. Nilai di kolom tidak berubah dan karenanya juga tidak dapat menyebabkan kesalahan (anggaplah Anda tidak memiliki BEFORE UPDATE yang benar-benar funky pemicu yang dapat berperilaku buruk). Jumlah kolom tidak relevan di sini, Anda dapat mengubah sebanyak atau sesedikit mungkin dalam satu pernyataan sesuka Anda.