MySQL ON DUPLICATE KEY UPDATE用法
MySQL ON DUPLICATE KEY UPDATE 用法
1
2
3
在 MySQL 中,ON DUPLICATE KEY UPDATE 是一个非常有用的语法,用于在插入数据时,如果遇到主键或唯一索引冲突,则执行更新操作,而不是插入新记录。这种方法可以简化代码,避免多次查询和判断。
基本用法
假设我们有一个表 user_admin_t,其中包含以下字段:
CREATE TABLE user_admin_t (
_id INT PRIMARY KEY,
password VARCHAR(255)
);
我们可以使用以下语句插入数据:
INSERT INTO user_admin_t (_id, password)
VALUES (1, '第一次插入的密码')
ON DUPLICATE KEY UPDATE
password = '更新后的密码';
如果 _id 为 1 的记录已经存在,则会更新 password 字段为 '更新后的密码'
1
2
。
批量插入和更新
ON DUPLICATE KEY UPDATE 也支持批量插入和更新。例如:
INSERT INTO user_admin_t (_id, password)
VALUES (1, '第一次插入的密码'), (2, '第二次插入的密码')
ON DUPLICATE KEY UPDATE
password = VALUES(password);
这条语句会插入两条记录,如果 _id 为 1 或 2 的记录已经存在,则会更新相应的 password 字段
1
2
。
注意事项
唯一索引或主键:ON DUPLICATE KEY UPDATE 依赖于唯一索引或主键。如果表中没有唯一索引或主键,则无法使用此语法
1
。
影响行数:如果是插入操作,影响行数为 1;如果是更新操作,影响行数为 2;如果更新的数据与已有数据相同,影响行数为 0
1
。
并发事务:在并发事务中使用 ON DUPLICATE KEY UPDATE 可能会导致死锁,因此需要谨慎使用
1
。
示例
以下是一个在 MyBatis 中使用 ON DUPLICATE KEY UPDATE 的示例:
总之,ON DUPLICATE KEY UPDATE 是一个强大的工具,可以简化数据插入和更新的逻辑,但在使用时需要注意一些细节和潜在的问题
1
2
。

浙公网安备 33010602011771号