KEMASKINI BERsyarat dalam INSERT ... ON DUPLICATE KEY Update
Dalam MySQL, pernyataan INSERT ... ON DUPLICATE KEY UPDATE membenarkan anda untuk memasukkan baris baharu atau mengemas kini baris sedia ada jika baris dengan kunci unik yang sama sudah wujud. Walau bagaimanapun, kadangkala anda mungkin memerlukan bahagian kemas kini bersyarat, hanya melaksanakan jika syarat tertentu dipenuhi.
Malangnya, klausa WHERE tidak disokong dalam sintaks ON DUPLICATE KEY UPDATE. Untuk mengatasi had ini, anda boleh menggunakan fungsi IF() dalam klausa KEMASKINI.
Fungsi IF() mengambil tiga argumen: syarat, nilai untuk dikembalikan jika syarat itu benar dan nilai untuk pulangkan jika syarat itu palsu. Ini membolehkan anda menentukan syarat yang menyemak sama ada syarat tambahan telah berubah dan kemudian menetapkan nilai secara bersyarat untuk dikemas kini.
Sebagai contoh, pertimbangkan pernyataan 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 kenyataan ini, lajur last_event_id hanya akan dikemas kini jika last_event_created_at lajur baris sedia ada lebih awal daripada nilai dalam klausa VALUES. Jika tidak, last_event_id akan kekal tidak berubah.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dalam INSERT MySQL ... PADA KEMASKINI KUNCI DUPLICATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!