Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan dan Kemas Kini Bersyarat?
Apabila bekerja dengan pangkalan data, selalunya perlu untuk menangani situasi di mana rekod dengan nilai unik yang sama mungkin perlu sama ada dimasukkan atau dikemas kini. MySQL menyediakan penyelesaian yang mudah untuk senario ini melalui sintaks INSERT ... PADA DUPLICATE KEY UPDATE.
Pertimbangkan situasi yang diterangkan dalam soalan. Seorang pengguna ingin memasukkan data baharu ke dalam jadual AggregatedData. Walau bagaimanapun, mereka mahu data ini dimasukkan hanya jika medan datenum belum wujud dalam jadual. Jika ia wujud, mereka ingin mengemas kini medan Cap Waktu dengan nilai baharu.
Pendekatan awal yang digunakan oleh pengguna melibatkan pernyataan KEMASKINI:
UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Walaupun pernyataan ini akan berfungsi jika nilai datenum sudah wujud, ia akan gagal jika nilai tidak terdapat dalam jadual. Untuk mengendalikan situasi ini dengan berkesan, INSERT ... ON DUPLICATE KEY UPDATE akan dimainkan.
Sintaks yang betul untuk operasi ini ialah:
INSERT INTO AggregatedData (datenum, Timestamp) VALUES ("734152.979166667", "2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
Dalam pernyataan ini:
Menggunakan pendekatan ini, pengguna boleh memastikan bahawa data baharu dimasukkan apabila datenum adalah unik dan bahawa data sedia ada dikemas kini apabila datenum adalah pendua. Medan datenum tidak perlu disertakan dalam klausa KEMASKINI kerana ia tidak boleh diubah.
Atas ialah kandungan terperinci Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan dan Kemas Kini Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!