Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengemas kini Data Secara Bersyarat dengan INSERT ... PADA KEMASKINI KUNCI PENDUA?

Bagaimana untuk Mengemas kini Data Secara Bersyarat dengan INSERT ... PADA KEMASKINI KUNCI PENDUA?

Barbara Streisand
Lepaskan: 2024-10-29 17:07:02
asal
620 orang telah melayarinya

How to Update Data Conditionally with INSERT ... ON DUPLICATE KEY UPDATE?

Sisipkan Bersyarat ... PADA KEMASKINI KUNCI DUA

Apabila menggunakan INSERT ... PADA KEMASKINI KUNCI DUA, mungkin perlu memohon kemas kini secara bersyarat, hanya apabila syarat tertentu dipenuhi. Walau bagaimanapun, penggunaan WHERE dalam klausa UPDATE tidak disokong.

Penyelesaian dengan IF()

Untuk mengatasi had ini, adalah mungkin untuk menggunakan IF( ) berfungsi untuk menilai keadaan dan menentukan sama ada kemas kini perlu dilakukan. Sintaks berikut menggambarkan penyelesaian ini:

INSERT INTO table_name (column1, column2)
VALUES (value1, value2)
ON DUPLICATE KEY UPDATE
  column2 = IF(condition, new_value, old_value);
Salin selepas log masuk

Contoh:

Pertimbangkan senario berikut:

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
  VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
Salin selepas log masuk

Dalam contoh ini, kemas kini to last_event_id hanya akan berlaku jika nilai last_event_created_at dalam baris masuk lebih lewat daripada nilai sedia ada dalam pangkalan data. Ini memastikan acara terbaharu direkodkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Data Secara Bersyarat dengan INSERT ... PADA KEMASKINI KUNCI PENDUA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan