KEMASKINI BERsyarat untuk INSERT ... PADA KUNCI PENDULIK
Memasukkan atau mengemas kini rekod berdasarkan syarat kunci pendua ialah senario biasa dalam pengaturcaraan pangkalan data . Walau bagaimanapun, kadangkala anda mungkin perlu mengehadkan lagi syarat kemas kini, menjadikannya bergantung pada kriteria tambahan. Malangnya, sintaks INSERT ... ON DUPLICATE KEY UPDATE tidak menyokong klausa WHERE secara asli untuk kemas kini bersyarat.
Mengatasi Had
Untuk mengatasi had ini, anda boleh menggunakan fungsi IF() dalam klausa UPDATE. Fungsi IF() membolehkan anda menentukan nilai alternatif berdasarkan ungkapan logik yang diberikan.
Contoh Pelaksanaan
Pertimbangkan INSERT berikut ... PADA KEMASKINI KUNCI DUA pertanyaan:
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 pertanyaan ini, klausa UPDATE mengandungi pernyataan IF() yang menyemak sama ada nilai last_event_created_at sedia ada kurang daripada nilai yang dimasukkan. Jika nilai sedia ada lebih lama, kemas kini akan dilakukan, menggantikan last_event_id dengan nilai baharu. Jika tidak, last_event_id yang sedia ada akan dikekalkan.
Pertimbangan Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dengan INSERT ... PADA KUNCI DUA dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!