INSERT ... PILIH ... PADA KEMASKINI KUNCI PENDUA Penjelasan Sintaks
Apabila melakukan pertanyaan INSERT di mana sesetengah lajur mungkin sudah wujud dalam jadual sasaran, klausa ON DUPLICATE KEY UPDATE boleh digunakan. Klausa ini membolehkan anda menentukan kriteria kemas kini dan nilai untuk dikemas kini.
Sintaks untuk klausa KEMASKINI dalam pertanyaan sedemikian adalah seperti berikut:
ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;
Aspek utama untuk difahami ialah bagaimana MySQL merujuk nilai yang dimasukkan dan dikemas kini. Secara lalai, bahagian sebelum tanda sama merujuk kepada lajur yang dinamakan dalam klausa INSERT INTO, manakala bahagian selepas tanda sama merujuk kepada lajur yang dinamakan dalam klausa SELECT.
Sebagai contoh, pertimbangkan pertanyaan berikut:
INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur) SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur FROM tmp t WHERE uid=x ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, ...;
Dalam pertanyaan ini, lajur yang dinamakan dalam klausa INSERT INTO akan digunakan untuk penugasan lajur oleh lalai:
Lajur yang dinamakan dalam klausa SELECT akan digunakan untuk nyatakan kemas kini nilai:
Lajur yang tidak termasuk dalam klausa ON DUPLICATE KEY UPDATE tidak akan dikemas kini.
Atas ialah kandungan terperinci Bagaimana MySQL Mengendalikan INSERT ... PILIH ... PADA DUPLICATE KEY UPDATE Syntax?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!