首頁 >資料庫 >mysql教程 >MySQL 的 ON DUPLICATE KEY UPDATE 如何處理多行的同時插入和更新?

MySQL 的 ON DUPLICATE KEY UPDATE 如何處理多行的同時插入和更新?

Linda Hamilton
Linda Hamilton原創
2025-01-11 07:02:41951瀏覽

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

MySQL 的 ON DUPLICATE KEY UPDATE:高效處理並發多行插入和更新

在 MySQL 表中插入多行時,會出現需要在更新現有記錄之前檢查是否有唯一鍵(與主鍵不同)的情況。 ON DUPLICATE KEY UPDATE 子句提供了一個優雅的解決方案。

MySQL 8.0.19 及更高版本使用插入行的別名提供改進的語法。 這允許更清晰、更易讀的更新:

<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>

對於 8.0.19 之前的 MySQL 版本(請注意,VALUES 方法從 8.0.20 開始已棄用),需要使用以下方法:

<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>

在這兩個範例中,如果在插入期間出現唯一鍵衝突,則會使用提供的值更新受影響的行。否則,將會新增新行。

重要的是要記住 VALUES 中的 ON DUPLICATE KEY UPDATE 並不引用現有行的值,而是引用嘗試插入新行的相應列值。

以上是MySQL 的 ON DUPLICATE KEY UPDATE 如何處理多行的同時插入和更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn