Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melakukan Upserts dengan Cekap dalam MySQL dengan Pengendalian Kunci Pendua?
Pertanyaan Upsert yang Cekap untuk Kemas Kini Kunci Pendua
Apabila memasukkan data ke dalam jadual MySQL dengan indeks unik, selalunya perlu mengemas kini yang sedia ada rekod jika kunci sudah wujud. Untuk mencapai matlamat ini, klausa "KEMASKINI KUNCI PENDUPLICATE" biasanya digunakan, menyatakan medan yang akan diubah suai. Walau bagaimanapun, menyatakan semua medan sekali lagi boleh menjadi tidak cekap.
Sintaks Alternatif
Pendekatan yang lebih mudah ialah menggunakan fungsi VALUES(), seperti yang ditunjukkan di bawah:
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 mengelakkan keperluan untuk menentukan setiap medan dua kali, menjadikan pertanyaan lebih banyak ringkas.
Pertimbangkan Mengelakkan Kemas Kini
Adalah penting untuk ambil perhatian bahawa mengemas kini medan dengan nilai yang sama yang sedia ada adalah tidak perlu. Jika rekod sedia ada sudah mengandungi data yang sama seperti sisipan, tidak perlu melakukan kemas kini. Sintaks berikut boleh digunakan untuk mengelakkan kemas kini yang tidak diperlukan:
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;
Mendapatkan semula ID Sisipan Terakhir
Untuk mendapatkan ID rekod yang baru dimasukkan atau dikemas kini, sintaks bergantung pada apl bahagian belakang yang digunakan. Contohnya, dalam LuaSQL, fungsi conn:getlastautoid() boleh digunakan untuk mendapatkan semula nilai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Upserts dengan Cekap dalam MySQL dengan Pengendalian Kunci Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!