我正在尝试在具有标识列的表中插入记录。由于各种原因,这不应是直接插入,但应具有与外部表相同的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不应为OFF,但我将其设置为ON。
最佳答案
尝试在dentity_insert
之外设置execute
:
SET IDENTITY_INSERT RemoteDB.dbo.FrameContent ON;
INSERT ...
如果在
execute
中进行设置,则该设置仅适用于execute
中的其他语句。关于sql - 当IDENTITY_INSERT设置为OFF时,无法为表中的标识列插入显式值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17211987/