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中文網其他相關文章!