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
UPDATE
pernyataan sebagai gantinya pada baris yang ada dengan yangINSERT
pernyataan 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.