ホームページ >データベース >mysql チュートリアル >SQL で「ID 列に明示的な値を挿入できません」エラーがスローされるのはなぜですか?その修正方法は何ですか?
SQL 挿入操作中に「IDENTITY_INSERT が OFF に設定されている場合、テーブル 'table' の ID 列に明示的な値を挿入できません」というエラーが発生しましたか?このガイドでは、その原因と解決策を説明します。 このエラーは、値が自動的に生成される ID 列として指定された列に手動で値を割り当てようとすると発生します。
ID 列は自動的に増加するデータベース列で、通常は主キーまたは一意の識別子として機能します。 データベースは増分プロセスを管理し、通常は新しい行ごとに固定ステップ値 (通常は 1) を追加します。 これにより、データベース操作と参照整合性にとって不可欠な、一意の連続した値が保証されます。
テーブルの IDENTITY_INSERT
プロパティが OFF
に設定されているときに ID 列に値を直接挿入しようとすると、エラーが発生します。 この設定により、ID 列への手動での値の割り当てが防止されます。
IDENTITY_INSERT
この解決策には、影響を受けるテーブルの IDENTITY_INSERT
を一時的に有効にして手動挿入を許可することが含まれます。 プロセスは次のとおりです:
IDENTITY_INSERT
を有効にする: 次のコマンドを実行します。[TableName]
をテーブルの名前に置き換えます:
<code class="language-sql">SET IDENTITY_INSERT [TableName] ON</code>
挿入を実行します: ここで、ID 列の明示的な値を使用して挿入ステートメントを実行します。
IDENTITY_INSERT
を無効にする: 挿入後、すぐに IDENTITY_INSERT
を無効にして自動生成動作を復元します:
<code class="language-sql">SET IDENTITY_INSERT [TableName] OFF</code>
これにより、後続の挿入で ID 列の自動インクリメント機能が再度使用され、データベースの整合性が維持されます。 予期しない動作を防ぐために、手動で挿入するたびに必ず IDENTITY_INSERT
を無効にしてください。
以上がSQL で「ID 列に明示的な値を挿入できません」エラーがスローされるのはなぜですか?その修正方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。