1. 背景
关于mysql的on duplicate key update的功能,解决了如下场景的问题:如果数据存在做更新,否则增加。对于使用此场景的情况,使用此功能简化对数据的更新操作,带来好多方便,如:简化代码 ;
on duplicate key update的使用事例如下:
insert into tablename (id,name,amount,...) values(1,'jack',0,...),(2,'ma',1,...) on duplicate key update amount=values(amount);
2. 问题
使用mysql的on duplicate key update的功能经常遇到的问题:
更新数据的时候,对主键或唯一索引的字段做了更新;会导致更新数据操作失败,或者数据的唯一性发生变更或者被篡改。
避免出现上述问题,根据业务实际场景,on duplicate key update后面不要更新主键或唯一索引的字段。