在 SQL 插入操作中遇到錯誤「Cannot insert明確值用於表'table'中的identity列,當IDENTITY_INSERT設定為OFF」?本指南解釋了原因並提供了解決方案。 當您嘗試手動將值指派給指定為識別列的列(該列會自動產生值)時,會發生此錯誤。
身分列是自動遞增的資料庫列,通常用作主鍵或唯一識別碼。 資料庫管理遞增過程,通常為每個新行新增固定步長值(通常為 1)。 這確保了唯一的、連續的值,對於資料庫操作和參考完整性至關重要。
該錯誤是由於在表的 IDENTITY_INSERT
屬性設定為 OFF
時嘗試將值直接插入識別列而引起的。 此設定可防止對標識列進行手動賦值。
IDENTITY_INSERT
解決方案涉及暫時啟用受影響的表的 IDENTITY_INSERT
以允許手動插入。 流程如下:
啟用 IDENTITY_INSERT
: 執行以下命令,將 [TableName]
替換為您的表名稱:
<code class="language-sql">SET IDENTITY_INSERT [TableName] ON</code>
執行插入:現在,使用識別列的明確值執行插入語句。
停用IDENTITY_INSERT
:插入後,立即停用IDENTITY_INSERT
以恢復自動產生行為:
<code class="language-sql">SET IDENTITY_INSERT [TableName] OFF</code>
這確保後續插入將再次使用識別列的自動增量功能,從而維護資料庫的完整性。 請記住在每次手動插入後始終停用 IDENTITY_INSERT
以防止意外行為。
以上是為什麼 SQL 會拋出「無法為標識列插入明確值」錯誤以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!