SQL Server 2008:使用 IDENTITY_INSERT 管理識別列插入
在 SQL Server 資料庫中,會出現需要手動將值插入識別列的情況。 但是,IDENTITY_INSERT
預設情況下處於停用狀態,無法直接插入。
了解 IDENTITY_INSERT
OFF 錯誤
嘗試將值插入到 IDENTITY_INSERT
設定為 OFF 的標記列中會導致此錯誤:
當 IDENTITY_INSERT 設定為 OFF 時,無法在表格「TableName」中插入識別列的明確值。
這是因為 SQL Server 會自動管理唯一識別值。 當 IDENTITY_INSERT
為 OFF 時,資料庫期望標識列為空,從而允許它分配下一個連續值。
使用 SQL Server Management Studio (SSMS) 啟用 IDENTITY_INSERT
要為 SSMS 中的特定表啟用 IDENTITY_INSERT
:
<tablename>
替換為您的表格名稱:<code class="language-sql">SET IDENTITY_INSERT <tablename> ON;</code>
IDENTITY_INSERT
。 直接使用T-SQL
您也可以直接在 T-SQL 管理 IDENTITY_INSERT
:
<code class="language-sql">SET IDENTITY_INSERT sometableWithIdentity ON; INSERT INTO sometableWithIdentity (IdentityColumn, col2, col3, ...) VALUES (AnIdentityValue, col2value, col3value, ...); SET IDENTITY_INSERT sometableWithIdentity OFF;</code>
詳細錯誤訊息
錯誤訊息將指定受影響的表,幫助識別問題。例如:
<code>Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF.</code>
透過暫時啟用IDENTITY_INSERT
,您可以控制識別列值。 之後始終禁用它以維護資料庫完整性和順序身份生成。
以上是如何在 SQL Server 2008 中啟用和停用 IDENTITY_INSERT 以進行受控識別列插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!