ホームページ >データベース >mysql チュートリアル >データベース行を削除する際の外部キー制約違反を解決するにはどうすればよいですか?
データベース削除操作中に外部キー制約の競合エラーが発生しました
クエリ DELETE FROM jobs WHERE job_id = 1 LIMIT 1
を使用してデータを削除しようとすると、外部キーの競合が発生したことを示すエラー メッセージ #1451 - Cannot delete or update a parent row: a foreign key constraint fails
が表示される場合があります。これは、jobs
テーブルで削除される行には、別のテーブルの子行が関連付けられているため、削除操作ができないことを意味します。
この問題について洞察を得るために、提供されたデータベース スキーマを調べてみましょう。 advertisers
テーブルは、advertiser_id
列の外部キーを介して jobs
テーブルを参照します。したがって、アクティブな広告主のジョブを削除すると、外部キー制約違反が発生します。
解決策
このエラーを解決するには、次の 2 つの方法があります:
1. 外部キーのチェックを無効にします:
1 つの方法は、次の SQL コマンドを使用して外部キーのチェックを一時的に無効にすることです:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=0; -- 禁用</code>
外部キーのチェックを無効にすると、DELETE
クエリを正常に実行できます。削除が完了したら、忘れずに外部キーのチェックを再度有効にしてください:
<code class="language-sql">SET FOREIGN_KEY_CHECKS=1; -- 启用</code>
2. 参照整合性を維持します:
もう 1 つのアプローチは、関連テーブルのデータを変更して参照整合性を確保することです。たとえば、jobs
テーブルに依存する行がない場合、外部キー制約に違反することなく削除操作を実行できます。 paymessomething.advertisers
概要
エラー は、外部キーの競合を示します。この問題を解決するには、外部キーのチェックを一時的に無効にするか、関連テーブルに依存する子行がないことを確認します。テーブル間の関係を理解することで、開発者はデータベースの整合性を効果的に維持し、データベース操作中の予期しないエラーを防ぐことができます。 #1451 - Cannot delete or update a parent row: a foreign key constraint fails
以上がデータベース行を削除する際の外部キー制約違反を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。