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中文网其他相关文章!