Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Klausa `KEMASKINI KUNCI DUPLICATE` MySQL dengan Cekap?

Bagaimanakah Saya Boleh Menggunakan Klausa `KEMASKINI KUNCI DUPLICATE` MySQL dengan Cekap?

Mary-Kate Olsen
Lepaskan: 2024-12-28 00:30:13
asal
498 orang telah melayarinya

How Can I Efficiently Use MySQL's `ON DUPLICATE KEY UPDATE` Clause?

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

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

  • Menentukan semua Nilai Medan:
    Satu pilihan adalah untuk menentukan semua medan nilai dalam klausa "KEMASKINI KUNCI DUPLICATE", 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
Salin selepas log masuk

Walau bagaimanapun, kaedah ini tidak disyorkan kerana ia boleh membosankan dan terdedah kepada ralat, terutamanya untuk jadual dengan banyak lajur .

  • Menggunakan VALUES(a) Sintaks:**
    Pendekatan yang lebih cekap ialah menggunakan sintaks VALUES():
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 hanya mengemas kini lajur yang dinyatakan dalam "KEMASKINI KUNCI PENDUA" klausa.

  • Memudahkan Pertanyaan:
    Dalam kes di mana nilai yang anda ingin masukkan atau kemas kini adalah sama, anda boleh memudahkan pertanyaan lagi:
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

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!

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