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
Barbara Streisandasal
2024-10-29 17:07:02608semak imbas

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);

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);

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!

Kenyataan:
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