无法更新标识列 SQL Server 2014 [重复]
Posted
技术标签:
【中文标题】无法更新标识列 SQL Server 2014 [重复]【英文标题】:Cannot update identity column SQL Server 2014 [duplicate] 【发布时间】:2017-02-10 04:22:13 【问题描述】:我正在尝试更新 Identity 列,但它目前不存在于任何关系表中。
如果我运行如图所示的 SQL 语句:
SET IDENTITY_INSERT Client..dt_Domain ON;
UPDATE Client..dt_Domain
SET DomainID = 1
WHERE DomainID = 2 AND ClientID = 3
SET IDENTITY_INSERT Client..dt_Domain OFF;
我收到以下错误:
消息 8102,第 16 级,状态 1,第 6 行 无法更新标识列“DomainID”。
【问题讨论】:
@JamesZ 我在发布此问题之前看到了该解决方案,但这对我不起作用。 这个答案有什么特别之处?因为它是正确的(也是唯一真正的方法)。如果您的表中没有 DomainID = 1 的内容,则插入所有 DomainID 为 1 的相同值并删除其中 DomainID = 2... @ZLK 如果我尝试以Msg 8102, Level 16, State 1, Line 6# # Cannot update identity column 'DomainID'.
上的缩进方式插入,我会收到相同的错误
@ZLK 插入记录然后删除它是最后的解决方案,如果没有任何效果:)
您可以使用SET IDENTITY_INSERT... ON
帮助将显式值INSERT 插入标识列 - 但您可以从不更新 标识列中的现有值.没有机制,没有 hack,没有“解决方法”——只是无法完成。
【参考方案1】:
我想没有办法Update
Identity 列。
但是,您可以通过将IDENTITY_INSERT
设置为 ON 来删除旧记录并使用所需的身份号码插入相同的记录
【讨论】:
我尝试了插入,但它也以同样的信息告终。因此,我添加了记录,然后考虑更新它。但现在我又卡住了。 您的插入是否违反了任何约束,例如唯一键或主键? @AaBa DomainID 是 PK,ClientID 是 FK,其余表中没有键。 @AaBa 有可能已经有DomainID = 1
的记录
不,没有 ID 为 1 的行。无论如何,我采取了一种驴式方法并继续前进,因为我需要修复另外 8 个像这样的表。呸!感谢您的时间@Shakeer以上是关于无法更新标识列 SQL Server 2014 [重复]的主要内容,如果未能解决你的问题,请参考以下文章