我正在尝试在具有标识列的表中插入记录。由于各种原因,这不应是直接插入,但应具有与外部表相同的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/

10-11 15:44