Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Klausa `KEMASKINI KUNCI DUPLICATE` MySQL dengan Cekap?
Menggunakan "ON DUPLICATE KEY UPDATE" Dengan Cekap
Apabila menjalankan operasi pangkalan data, adalah perkara biasa untuk menghadapi senario kunci pendua. Dalam kes sedemikian, anda mungkin mahu sama ada memasukkan baris baharu atau mengemas kini baris sedia ada dengan kekunci yang sama. Artikel ini meneroka penggunaan klausa "ON DUPLICATE KEY UPDATE" dalam MySQL untuk mengendalikan kunci pendua.
Masalahnya
Pertimbangkan pertanyaan MySQL berikut:
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
Id medan mempunyai indeks yang unik, bermakna tidak boleh ada nilai id pendua. Jika baris dengan id yang sama sudah wujud dalam pangkalan data, anda mahu mengemas kininya dan bukannya memasukkan baris baharu. Walau bagaimanapun, menyatakan semula semua nilai medan dalam "KEMASKINI KUNCI PENDUPLICATE" boleh menjadi tidak cekap dan berulang.
Penyelesaian Yang Mungkin
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8
Walau bagaimanapun, kaedah ini tidak disyorkan kerana ia boleh membosankan dan terdedah kepada ralat, terutamanya untuk jadual dengan banyak lajur .
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g)
Sintaks ini hanya mengemas kini lajur yang dinyatakan dalam "KEMASKINI KUNCI PENDUA" klausa.
INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8) ON DUPLICATE KEY UPDATE a=a, b=b, c=c, d=d, e=e, f=f, g=g;
Mengambil semula Yang Terakhir Disisipkan ID
Fungsi LAST_INSERT_ID() boleh digunakan untuk mendapatkan ID baris terakhir yang dimasukkan. Kaedah untuk menggunakan fungsi ini mungkin berbeza-beza bergantung pada apl bahagian belakang yang anda gunakan. Contohnya, dalam LuaSQL, kaedah conn:getlastautoid() mengambil nilai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Klausa `KEMASKINI KUNCI DUPLICATE` MySQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!