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
Lepaskan: 2024-12-08 13:41:11
asal
1018 orang telah melayarinya

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);
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan