一 关键字 on duplicate key update的介绍
1.1 介绍
在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。
原理是:
该语法会在插入数据之前判断,如果主键或唯一索引不存在,则插入数据。如果主键或唯一索引存在,则执行更新操作。
需要注意的是,在高并发的场景下使用on duplicate key update
语法,可能会存在死锁
的问题,所以要根据实际情况酌情使用。
1.2 实操案例
本案例:使用unique索引结合ON DUPLICATE KEY UPDATE语句实现,添加数据确保数据的唯一性,不重复,有则修改,没有则新添加。
1.新建表
id为为主键,name+sex组合成索引
2.执行sql语句
再次执行:
两次执行结果:可以看到实现了"有则修改,无则新添加"的效果