【发布时间】:2013-10-10 13:15:55
【问题描述】:
我在做:
SELECT uid, intStatus from dbo.MYTABLE
WHERE
intStatus = 10 and uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
我得到:
uid | intStatus
-------------------------------------- +---------------
'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1 | 10
然后我需要进行更新,我需要该 uid 的 intStatus 为 18。所以我这样做:
UPDATE dbo.MYTABLE SET intStatus = 18
WHERE
intStatus = 10 and uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
这是我得到错误的地方:
无法在具有唯一索引“ixMYTABLE”的对象“dbo.MYTABLE”中插入重复的键行。
谁能告诉我为什么会出现这个错误?我该如何解决?
uid 是 MYTABLE 的主键
intStatus 是一个非空整数
非常感谢!
【问题讨论】:
-
您的数据库设计中存在不允许该表中 intStatus 重复值的内容,并且还有另一条值为 18 的记录。解决它的方法是找出不允许重复的原因.可能有一个很好的理由。然后你必须重新审视你想要完成的事情。
-
错误状态为 ixMYTABLE 唯一索引。这个唯一索引的组成是什么?
-
uid 是 uniqueidentifier 主键不为空且 intStatus 是 int 不为空
-
你能发布创建表的脚本吗?请同时包含索引和约束创建。
-
这个问题解决了吗?我遇到了同样的问题,我无法缩小到我的 PK 被复制的位置
标签: sql sql-update key duplicates uniqueidentifier