首頁 >資料庫 >mysql教程 >為什麼無法將值插入到識別列中,如何修復它?

為什麼無法將值插入到識別列中,如何修復它?

Patricia Arquette
Patricia Arquette原創
2025-01-19 09:12:10732瀏覽

Why Can't I Insert a Value into an Identity Column, and How Do I Fix It?

解決「無法為識別列插入明確值」錯誤

當您嘗試手動將值插入識別列(資料庫自動指派唯一順序值的欄位)時,您將遇到錯誤「當IDENTITY_INSERT 為「無法在表'table' 中插入識別列的明確值”設定為關閉。” 發生這種情況是因為標識列旨在自我管理其值。

解:暫時啟用 IDENTITY_INSERT

解決方案是暫時啟用特定表的IDENTITY_INSERT。 此設定會覆蓋自動值產生。 流程如下:

  1. 啟用 IDENTITY_INSERT: 使用下列 SQL 指令,將 TableName 替換為您的表格名稱:
<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
  1. 執行 INSERT: 現在您可以使用識別列的明確值執行 INSERT 語句。 例如:
<code class="language-sql">INSERT INTO TableName (IdentityColumnName, Column2, Column3)
VALUES (100, 'Some Value', 'Another Value');</code>
  1. 停用 IDENTITY_INSERT: 至關重要的是,插入後,停用 IDENTITY_INSERT 以恢復自動識別列行為:
<code class="language-sql">SET IDENTITY_INSERT TableName OFF</code>

範例:

考慮一個有識別列Orders的表OrderID。 若要插入具有特定 OrderID 的記錄,您可以執行以下操作:

<code class="language-sql">SET IDENTITY_INSERT Orders ON;

INSERT INTO Orders (OrderID, CustomerID, OrderDate)
VALUES (12345, 1, '2024-03-08');

SET IDENTITY_INSERT Orders OFF;</code>

這允許您將值 12345 插入到 OrderID 列中。 請記住在插入後始終停用 IDENTITY_INSERT 以保持身份列的完整性。

以上是為什麼無法將值插入到識別列中,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn