天天看点

MySQL 小心使用 replace intoMySQL replace into 错误案例

其他字段value莫名其妙的没了

step1 初始化记录

step2 构造错误场景

总结

col_3 的值,从原来的c,变成了null,天呐,数据不见了。 id 也变了。

用户原本的需求,应该是如果col_1='c' 存在,那么就改变col_2='cc',其余的记录保持不变,结果id,col_3都变化了

解决方案就是:将replace into 改成 insert into … on duplicate key update

但是你以为这样就完美的解决了吗? 马上就会带来另外一场灾难,请看下面的错误场景

error 1062 (23000): duplicate entry 'x' for key 'primary'

step3 错误案例产生

replace with unique key

replace with primary key

继续阅读