代码之家  ›  专栏  ›  技术社区  ›  4thSpace wkw

如何更新具有唯一键约束的列?

  •  4
  • 4thSpace wkw  · 技术社区  · 12 年前

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

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

    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”中插入重复的键。

    有什么想法可以通过更新来完成吗?

    1 回复  |  直到 12 年前
        1
  •  2
  •   M.Ali    12 年前

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

    ALTER TABLE TableName
    DROP CONSTRAINT uc_ConstraintName