Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan Serentak dan Kemas Kini Berbilang Baris?

Bagaimanakah MySQL ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan Serentak dan Kemas Kini Berbilang Baris?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 07:02:41953semak imbas

How Can MySQL's ON DUPLICATE KEY UPDATE Handle Simultaneous Inserts and Updates of Multiple Rows?

MySQL ON DUPLICATE KEY UPDATE: Mengendalikan Sisipan dan Kemas Kini Berbilang Baris Serentak dengan Cekap

Apabila memasukkan berbilang baris ke dalam jadual MySQL, situasi timbul di mana anda perlu menyemak kehadiran kunci unik (berbeza daripada kunci utama) sebelum mengemas kini rekod sedia ada. Klausa ON DUPLICATE KEY UPDATE menyediakan penyelesaian yang elegan.

MySQL 8.0.19 dan versi yang lebih baru menawarkan sintaks yang dipertingkat menggunakan alias untuk baris yang disisipkan. Ini membolehkan kemas kini yang lebih bersih dan boleh dibaca:

<code class="language-sql">INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
    AS new
ON DUPLICATE KEY UPDATE
    age = new.age
    ...</code>

Untuk versi MySQL sebelum 8.0.19 (perhatikan bahawa kaedah VALUES ditamatkan pada 8.0.20), pendekatan berikut diperlukan:

<code class="language-sql">INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = VALUES(age),
     ...</code>

Dalam kedua-dua contoh, jika konflik kunci unik timbul semasa sisipan, baris yang terjejas dikemas kini dengan nilai yang disediakan. Jika tidak, baris baharu ditambahkan.

Adalah penting untuk diingat bahawa VALUES dalam ON DUPLICATE KEY UPDATE tidak merujuk nilai baris sedia ada, sebaliknya nilai lajur yang sepadan daripada percubaan sisipan baris baharu.

Atas ialah kandungan terperinci Bagaimanakah MySQL ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan Serentak dan Kemas Kini Berbilang Baris?. 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