「ID 列に明示的な値を挿入できません」エラーのトラブルシューティング
ID 列 (データベースによって一意の連続値が自動的に割り当てられる列) に値を手動で挿入しようとすると、「IDENTITY_INSERT が次の場合、テーブル 'table' の ID 列に明示的な値を挿入できません」というエラーが発生します。オフに設定してください。」 これは、ID 列が値を自己管理するように設計されているために発生します。
解決策: IDENTITY_INSERT を一時的に有効にする
解決策は、特定のテーブルに対して一時的に IDENTITY_INSERT
を有効にすることです。 この設定は、値の自動生成をオーバーライドします。 プロセスは次のとおりです:
IDENTITY_INSERT
を有効にする: 次の SQL コマンドを使用して、TableName
をテーブルの名前に置き換えます:SET IDENTITY_INSERT TableName ON
INSERT
ステートメントを実行できるようになります。 例:INSERT INTO TableName (IdentityColumnName, Column2, Column3) VALUES (100, 'Some Value', 'Another Value');
IDENTITY_INSERT
を無効にする: 重要なのは、挿入後、IDENTITY_INSERT
を無効にして自動 ID 列の動作を復元することです:SET IDENTITY_INSERT TableName OFF
例:
ID 列 Orders
を持つテーブル OrderID
を考えてみましょう。 特定の OrderID
を持つレコードを挿入するには、次のようにします:
SET IDENTITY_INSERT Orders ON; INSERT INTO Orders (OrderID, CustomerID, OrderDate) VALUES (12345, 1, '2024-03-08'); SET IDENTITY_INSERT Orders OFF;
これにより、値 12345
を OrderID
列に挿入できるようになります。 ID 列の整合性を維持するために、挿入後は必ず IDENTITY_INSERT
を無効にしてください。
以上がID 列に値を挿入できない理由とその修正方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。