我在做:
SELECT uid, intStatus from dbo.MYTABLE
WHERE
intStatus = 10 and uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
我得到了:
uid | intStatus
-------------------------------------- +---------------
'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1 | 10
然后我需要做一个更新,我需要intStatus为18的uid。所以我这样做:
UPDATE dbo.MYTABLE SET intStatus = 18
WHERE
intStatus = 10 and uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
这就是我收到错误的地方:
无法在对象'dbo.MYTABLE'中插入具有唯一索引'ixMYTABLE'的重复键行。
请有人,请告诉我为什么我收到此错误?我该如何解决?
uid是MYTABLE的主键
intStatus是一个非null int
非常感谢!
答案 0 :(得分:0)
可能你已经有了一行intStatus 18和uid'a1a1 ......'
尝试运行并查看您是否已经尝试使用UPDATE创建的行:
SELECT uid,
intStatus
FROM dbo.MYTABLE
WHERE intStatus = 18
AND uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1'
答案 1 :(得分:0)
如果uid是您的主键,那么根据定义它是唯一的,因此intStatus条件无关紧要。这应该有效:
UPDATE dbo.MYTABLE SET intStatus = 18
WHERE uid = 'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1';
如果这不起作用,那么您可以使用组合两列而不是单列键的复合键。
答案 2 :(得分:-1)
intStatus是唯一的 为什么mysql会抛出错误。
如果你想执行那个查询,intStatus不应该是唯一的