记一次线上update数据报错ERROR 1062 (23000

2021-01-25  本文已影响0人  张清柏
PRIMARY KEY (`a`,`b`,`c`,`d`)

主键用了四列作为主键,但是为什么会导致更新失败呢,这里我举个栗子
t1表中本来有数据
a1 b1 c1 d1 和a1 b1 c1 d2 ,但是d2是脏数据,这个时候我的sql执行 正常来说是

# 把d2改成d1
update t1 set  d=d1 where d=d2 

这样做貌似没有问题,但是确实会更新失败,为什么?
因为如果你的sql 执行成功了会怎么样?
表里面就会有两条数据 a1 b1 c1 d1,而这四列是主键索引,是不能重复的。所以怎么可能会更新成功呢!
那么这个时候应该怎么办呢?很简单,既然正常数据合脏数据都存在了,直接删除掉脏数据就可以了,不用执行更新操作

上一篇 下一篇

猜你喜欢

热点阅读