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

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

任何想法如何通过更新来完成?

最佳答案

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

ALTER TABLE TableName
DROP CONSTRAINT uc_ConstraintName

关于sql-server - 如何更新具有唯一键约束的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597421/

相关文章:

sql - 如何以编程方式将非身份列更改为身份一?

sql-server - 由于内连接和左连接导致 SQL 查询速度慢?

sql-server - SQL Server:合并中的值不变时,避免更新列

sql - 在 WHERE 子句中使用 CASE 表达式中的 "result expression"

sql - 以......开头的标识符太长。最大长度为 128

sql - 解决连续性的日期范围(GAPS AND ISLANDS)

SQL Server 子查询语法

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'IncomeTable' 中为标识列插入显式值

c# - 如何避免在 SQL Server 中将 HTML 实体转换为 html 形式 CAST(@ContentXml AS XML)

sql-server - Count(*) 可以返回 null 吗?