Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melakukan Upserts dengan Cekap dalam MySQL dengan Pengendalian Kunci Pendua?

Bagaimanakah Saya Boleh Melakukan Upserts dengan Cekap dalam MySQL dengan Pengendalian Kunci Pendua?

Susan Sarandon
Susan Sarandonasal
2024-12-08 13:41:111012semak imbas

How Can I Efficiently Perform Upserts in MySQL with Duplicate Key Handling?

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!

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