ホームページ >データベース >mysql チュートリアル >ID 列に値を挿入できない理由とその修正方法は?

ID 列に値を挿入できない理由とその修正方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-19 09:12:10746ブラウズ

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

「ID 列に明示的な値を挿入できません」エラーのトラブルシューティング

ID 列 (データベースによって一意の連続値が自動的に割り当てられる列) に値を手動で挿入しようとすると、「IDENTITY_INSERT が次の場合、テーブル 'table' の ID 列に明示的な値を挿入できません」というエラーが発生します。オフに設定してください。」 これは、ID 列が値を自己管理するように設計されているために発生します。

解決策: IDENTITY_INSERT を一時的に有効にする

解決策は、特定のテーブルに対して一時的に IDENTITY_INSERT を有効にすることです。 この設定は、値の自動生成をオーバーライドします。 プロセスは次のとおりです:

  1. IDENTITY_INSERT を有効にする: 次の SQL コマンドを使用して、TableName をテーブルの名前に置き換えます:
<code class="language-sql">SET IDENTITY_INSERT TableName ON</code>
  1. INSERT を実行します: これで、ID 列の明示的な値を使用して INSERT ステートメントを実行できるようになります。 例:
<code class="language-sql">INSERT INTO TableName (IdentityColumnName, Column2, Column3)
VALUES (100, 'Some Value', 'Another Value');</code>
  1. IDENTITY_INSERT を無効にする: 重要なのは、挿入後、IDENTITY_INSERT を無効にして自動 ID 列の動作を復元することです:
<code class="language-sql">SET IDENTITY_INSERT TableName OFF</code>

例:

ID 列 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>

これにより、値 12345OrderID 列に挿入できるようになります。 ID 列の整合性を維持するために、挿入後は必ず IDENTITY_INSERT を無効にしてください。

以上がID 列に値を挿入できない理由とその修正方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。