【发布时间】:2020-12-16 18:37:40
【问题描述】:
我在一张桌子上做如下操作:
UPDATE tname
SET cname = cname + INTERVAL 8 HOUR;
在表中,cname 列用于时间戳并设置为主键。操作是将cname列的所有值加8小时。
但是由于重复键,操作收到错误消息。我不知道这到底是怎么发生的,但我猜是有一个列'cname',它的值间隔为 8 小时。 因此,当它尝试添加 8 小时并写入时,会出现重复键错误。
我有两个问题:
-
如果操作出错,是不是表不一致?我的意思是有些行是用 8 小时添加的,有些行不是?
-
如何完成此操作而不会出现重复键错误?
【问题讨论】:
-
如果 cname 是主要的,它有一个隐式的唯一索引,因此如果存在另一个 cname + 8 小时的记录,你会得到这个错误。我会说更改主键是糟糕的表设计。
标签: mysql duplicates sql-update