Rumah >pangkalan data >tutorial mysql >Sisipan atau Kemas Kini MySQL: Bagaimana Mengendalikan Lajur Kunci Bukan Utama Unik dengan Cekap?
MySql Insert atau Update Based on Unique Condition
Memasukkan data ke dalam jadual MySQL selalunya melibatkan pemeriksaan sama ada data sudah wujud sebelum melakukan kemas kini . Walau bagaimanapun, apabila berurusan dengan lajur kunci bukan utama yang unik, penyataan KEMASKINI tradisional menjadi pendek.
Dalam kes ini, pengguna mencari kaedah yang cekap untuk memasukkan data ke dalam jadual AgregatedData jika lajur datenum tidak wujud , atau kemas kini baris sedia ada jika ia berlaku.
Penyelesaian: INSERT ... PADA KUNCI DUA KEMASKINI
Seperti yang dicadangkan oleh Jai, penyelesaian yang paling sesuai ialah menggunakan INSERT ... PADA sintaks KEMASKINI KUNCI DUA:
INSERT INTO AggregatedData (datenum,Timestamp) VALUES ("734152.979166667","2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
Pernyataan ini melakukan sisipan jika tarikhnum tidak dijumpai. Jika ia wujud, ia mengemas kini lajur Cap Waktu dengan nilai yang disediakan dalam fungsi VALUES().
Penjelasan
Fungsi VALUES() memastikan bahawa nilai yang digunakan untuk kemas kini adalah sama seperti yang dinyatakan dalam pernyataan INSERT. Ini menghalang kemas kini nilai lajur yang tidak disengajakan.
Kelebihan INSERT ... ON DUPLICATE KEY UPDATE
Atas ialah kandungan terperinci Sisipan atau Kemas Kini MySQL: Bagaimana Mengendalikan Lajur Kunci Bukan Utama Unik dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!