SQL Server 表在導入數據時,有時需要將自增長列指定數值,來保證導入前后的數據完全一致,如何實現?
SQL Server 提供了方法:
SET IDENTITY_INSERT,允許將顯式值插入表的標識列中。
參考文檔:SET IDENTITY_INSERT | Miscosoft Docs
語法:
SET IDENTITY_INSERT [ database_name . [ schema_name] . ] table { ON | OFF }
用法:
-- SET IDENTITY_INSERT to ON. SET IDENTITY_INSERT dbo.Tool ON GO -- Try to insert an explicit ID value of 3. INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel') GO -- SET IDENTITY_INSERT to OFF. SET IDENTITY_INSERT dbo.Tool OFF GO
注意事項:
- INSERT INTO語句必須輸入列名,否則執行時會報錯“僅當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表‘Tool’中的標識列指定顯式值”。
- 一個會話中只有一個表的 IDENTITY_INSERT 屬性可以設置為 ON,在設置為ON、插入數據后,還需要設置該表 IDENTITY_INSERT為 OFF。