如何使用唯一键约束更新列?

时间:2013-10-25 18:52:51

标签: sql-server

我在一个表中插入了几行,使用了一个具有唯一键约束的列(theId)中的重复项。我这样做是通过将IDENTITY_INSERT设置为关闭然后打开的。

我尝试使用相同的技术进行更新,因为我需要更改这些重写值,但它不起作用:

SET IDENTITY_INSERT mytable OFF
update mytable set
theId = 5
WHERE mytableId in (40, 41)
SET IDENTITY_INSERT mytable ON

错误: 违反UNIQUE KEY约束'XI_mytale_mytableId_othercolumn_U'。无法在对象'dbo.mytable'中插入重复键。

有关如何使用UPDATE完成此操作的任何想法吗?

1 个答案:

答案 0 :(得分:2)

我认为您在设置SET IDENTITY_INSERT mytable ON后设置了手动添加值的An Identity Column令人困惑;具有唯一约束的列定义在其上。具有唯一约束的列永远不允许您添加重复值 如果您确实希望能够在具有唯一约束的列中添加重复值,则可以简单地删除唯一约束,因为当您没有唯一值时,为什么具有唯一约束。
您可以使用以下语句

使唯一约束下垂
ALTER TABLE TableName
DROP CONSTRAINT uc_ConstraintName