Sql-Server
為什麼即使在明確設置 IDENTITY_INSERT ON 並使用列列表後,我仍會收到身份插入錯誤?
我的程式碼:
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn ON INSERT INTO SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn SELECT ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable FROM ALinkedServer.PrettyCoolDatabaseAsWell.StandardSchema.TableWithIdentityColumn SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn OFF
錯誤:
消息 8101,第 16 層,狀態 1,第 4 行
只有在使用列列表並且 IDENTITY_INSERT 為 ON 時,才能指定表“SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn”中標識列的顯式值。
是什麼賦予了?
將列列表添加到您的程式碼中:
SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn ON INSERT INTO SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn (ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable) SELECT ColumnWithIdentity, OtherColumnWithoutIdentity, LastColumnInThisTable FROM ALinkedServer.PrettyCoolDatabaseAsWell.StandardSchema.TableWithIdentityColumn SET IDENTITY_INSERT SomeCoolDatabase.BoringOldSchema.TableWithIdentityColumn OFF GO
基本上,列列表是當您明確說明要插入的列時。
請記住,當您設置時
IDENTITY_INSERT ON
,您必須在插入語句中指定作為標識的列的值(在您的情況下為 columnColumnWithIdentity
)。如果,SQL Server 為標識列設置第一個空閒值,因此您IDENTITY_INSERT OFF
不能ColumnWithIdentity
在.SELECT``INSERT