当IDENTITY_INSERT设置为OFF时,无法在表中插入标识列的显式值

时间:2013-06-20 11:03:45

标签: sql insert identity-insert

我正在尝试在具有标识列的表中插入记录。由于各种原因,这不应该是直接插入,但它应具有与外表相同的ID。 所以我跑:

EXECUTE ('SET IDENTITY_INSERT RemoteDB.dbo.FrameContent ON')

INSERT INTO [RemoteDB].[dbo].[FrameContent] ([ID],[FrameID],[PacketType]) 
SELECT [ID],[FrameID],[PacketType]
FROM FrameContent 
WHERE [ID] NOT IN (SELECT [ID] FROM [RemoteDB].[dbo].[FrameContent])

我收到错误:

Cannot insert explicit value for identity column in table 'FrameContent' when IDENTITY_INSERT is set to OFF.

有什么想法吗?它抱怨IDENTITY_INSERT不应该关闭,但我将其设置为ON。

1 个答案:

答案 0 :(得分:9)

尝试在dentity_insert之外设置execute

SET IDENTITY_INSERT RemoteDB.dbo.FrameContent ON;
INSERT ...

如果您在execute内设置,它只会应用于execute内的其他语句。