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

Sql server 如何使用唯一键约束更新列?,sql-server,Sql Server,我已经在一个表中插入了几行,在一个列(theId)中使用了具有唯一键约束的重复项。为此,我将IDENTITY_INSERT设置为off,然后设置为on 我尝试了同样的技术来更新,因为我需要更改那些dupe值,但它不起作用: SET IDENTITY_INSERT mytable OFF update mytable set theId = 5 WHERE mytableId in (40, 41) SET IDENTITY_INSERT mytable ON 错误: 违反唯一键约束“XI\U

我已经在一个表中插入了几行,在一个列(theId)中使用了具有唯一键约束的重复项。为此,我将IDENTITY_INSERT设置为off,然后设置为on

我尝试了同样的技术来更新,因为我需要更改那些dupe值,但它不起作用:

SET IDENTITY_INSERT mytable OFF
update mytable set
theId = 5
WHERE mytableId in (40, 41)
SET IDENTITY_INSERT mytable ON
错误: 违反唯一键约束“XI\U mytale\U mytableId\U othercolumn\U”。无法在对象“dbo.mytable”中插入重复键


你知道如何通过更新来实现这一点吗?

我认为你对一个标识列感到困惑,在该列中,你在设置SET Identity\u INSERT mytable之后手动添加了值;具有定义了唯一约束的列。具有唯一约束的列永远不允许添加重复值。
如果您确实希望能够在具有唯一约束的列中添加重复值,您可以简单地删除唯一约束,因为当您没有唯一值时,为什么要有唯一约束。
您可以使用以下语句降低唯一约束

ALTER TABLE TableName
DROP CONSTRAINT uc_ConstraintName

请更透彻地解释一下你做了什么。前两句话描述了一些不可能的事情;将允许您在标识列(即自动增量列)中手动添加值。它与唯一约束无关。再次查看后,您是正确的。这涉及到一个复合键。