- 记一次线上update数据报错ERROR 1062 (23000): Duplicate entry '1764-336-128-30' for key 'PRIMARY'
- 有一次领导让我处理一批数据,原因是一个疾病在疾病库出现了两次,要删除一个疾病,并更新其他表对应的疾病id;我写了一批update 语句,但是报错,说主键重复,看到这个错误刚开始我很奇怪,如果主键重复应该是插入的时候就报啊,为什么更新的时候报呢,最后查看了一下表结构
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