ホームページ > データベース > mysql チュートリアル > データベース行を削除する際の外部キー制約違反を解決するにはどうすればよいですか?

データベース行を削除する際の外部キー制約違反を解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-14 16:11:43
オリジナル
299 人が閲覧しました

How to Resolve a Foreign Key Constraint Violation When Deleting Database Rows?

データベース削除操作中に外部キー制約の競合エラーが発生しました

クエリ 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 サイトの他の関連記事を参照してください。

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