我正在尝试在具有标识列的表中插入记录。由于各种原因,这不应该是直接插入,但它应具有与外表相同的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。
答案 0 :(得分:9)
尝试在dentity_insert
之外设置execute
:
SET IDENTITY_INSERT RemoteDB.dbo.FrameContent ON;
INSERT ...
如果您在execute
内设置,它只会应用于execute
内的其他语句。