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

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

Patricia Arquette
リリース: 2025-01-19 09:12:10
オリジナル
746 人が閲覧しました

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 をテーブルの名前に置き換えます:
SET IDENTITY_INSERT TableName ON
ログイン後にコピー
  1. INSERT を実行します: これで、ID 列の明示的な値を使用して INSERT ステートメントを実行できるようになります。 例:
INSERT INTO TableName (IdentityColumnName, Column2, Column3)
VALUES (100, 'Some Value', 'Another Value');
ログイン後にコピー
  1. 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;
ログイン後にコピー

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート