Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengemas Kini Rekod Sedia Ada Dengan Ringkas Apabila Memasukkan dengan Kekunci Unik Bercanggah?

Bagaimanakah Saya Boleh Mengemas Kini Rekod Sedia Ada Dengan Ringkas Apabila Memasukkan dengan Kekunci Unik Bercanggah?

Barbara Streisand
Barbara Streisandasal
2024-12-18 09:43:09309semak imbas

How Can I Concisely Update Existing Records When Inserting with Conflicting Unique Keys?

Sisipkan dengan Kemas Kini Kunci Pendua: Pendekatan Ringkas

Apabila bekerja dengan pangkalan data, selalunya wajar untuk mengemas kini rekod sedia ada apabila cuba memasukkan yang baharu dengan kekunci unik yang bercanggah . Di sinilah klausa "KEMASKINI KUNCI PENDUPLICATE" berguna.

Situasi

Andaikan anda mempunyai jadual dengan indeks unik pada medan "id" dan anda ingin memasukkan rekod baharu sambil memastikan bahawa jika id sudah wujud, rekod yang sepadan adalah dikemas kini.

Pendekatan Konvensional

Pendekatan konvensional melibatkan penetapan semua nilai medan dalam klausa KEMASKINI, 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=2, b=3, c=4, d=5, e=6, f=7, g=8;

Ini pendekatan berfungsi dengan baik tetapi boleh menjadi verbose jika anda mempunyai sejumlah besar lajur.

Alternatif Ringkas

Untuk memudahkan klausa KEMASKINI, anda boleh menggunakan kata kunci "VALUES" untuk menentukan nilai baharu bagi medan yang dikemas kini. Ini menghapuskan keperluan untuk mengulang nama 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);

Pendekatan ini lebih ringkas dan masih mencapai hasil yang sama.

Mendapatkan ID Terakhir yang Disisipkan

Jika anda perlu mendapatkan semula ID rekod yang baru dimasukkan atau dikemas kini, anda boleh menggunakan kaedah khusus bahagian belakang yang disediakan oleh pangkalan data atau rangka kerja anda. Contohnya, dalam LuaSQL, anda boleh menggunakan fungsi "conn:getlastautoid()" untuk mengambil ID yang dijana secara automatik yang terakhir.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas Kini Rekod Sedia Ada Dengan Ringkas Apabila Memasukkan dengan Kekunci Unik Bercanggah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn