ホームページ >データベース >mysql チュートリアル >子行を追加または更新できません: 外部キー制約が失敗します - MySQL エラーを解決する方法: 子行に外部キー制約があります

子行を追加または更新できません: 外部キー制約が失敗します - MySQL エラーを解決する方法: 子行に外部キー制約があります

王林
王林オリジナル
2023-10-05 08:22:55926ブラウズ

Cannot add or update a child row: a foreign key constraint fails - 如何解决MySQL报错:子行有外键约束

MySQL エラーを解決する方法: サブ行には外部キー制約があり、特定のコード例が必要です

MySQL データベースを使用すると、「追加できません」というエラーが発生することがあります。または子行を更新します: 外部キー制約が失敗します」というエラーが発生します。このエラーは通常、データの挿入または更新時の外部キー制約の問題を示します。この記事では、この問題を解決する方法を説明し、具体的なコード例を示します。

まず、外部キー制約について理解しましょう。データベースでは、外部キーはテーブル間の接続を確立するために使用される関係です。これは別のテーブルの主キーを指し、データの一貫性と整合性を維持するために使用されます。外部キー制約はデータの挿入または更新を制限します。指定された条件が満たされる必要があり、満たさない場合はエラーがスローされます。

「子行を追加または更新できません: 外部キー制約が失敗しました」エラーが発生した場合、通常は次のいずれかの理由が原因です。外部キー制約がありますが、挿入または更新されたデータが制約を満たしていません。

    外部キー制約がありますが、対応する主キーがメインテーブルに存在しません。
  1. 次に、いくつかの一般的な解決策を示します。

データが外部キー制約を満たしているかどうかを確認します。データを挿入または更新する前に、データが外部キーを満たしていることを確認してください。制約条件。たとえば、外部キーが別のテーブルの主キーに関連している場合、外部キー フィールドで挿入または更新されるデータは主テーブルに存在する必要があります。

    対応する主キーがメイン テーブルに存在するかどうかを確認します。対応する主キーがメイン テーブルに存在しない場合、サブテーブルでデータを挿入または更新するときに外部キー制約エラーがトリガーされます。この場合、まず対応する主キー データをメイン テーブルに挿入してから、サブテーブルを挿入または更新する必要があります。
  1. 次は、この問題の解決方法を示す具体的なコード例です。
users テーブル (users) と order テーブル (orders) の 2 つのテーブルがあるとします。ユーザー テーブルの主キーはユーザー ID (user_id) で、順序テーブルの外部キーはユーザー ID であり、ユーザー テーブルを関連付けるために使用されます。

まず、ユーザー テーブルを作成します。

CREATE TABLE users(

user_id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(50) NOT NULL

);

次に、order テーブルを作成します。

CREATE TABLEorders(

order_id INT PRIMARY KEY AUTO_INCREMENT,

user_id INT,

order_date DATE,
FOREIGN KEY (user_id ) REFERENCES users(user_id)
);

ここで、order テーブルにデータを挿入したいのですが、user テーブルにユーザー ID が存在しない場合、外部キー制約エラーが発生します。トリガーされます。この問題を解決するには、まず対応するユーザー データをユーザー テーブルに挿入し、次に注文データを挿入します。

-- 最初にユーザー データを挿入

INSERT INTO users(username) VALUES ( 'John ');

-- 次に、注文データを挿入します
INSERT INTOorders(user_id, order_date) VALUES (1, '2022-01-01');

上記の手順を実行します。コード例を使用すると、「子行を追加または更新できません: 外部キー制約が失敗します」というエラーを解決できます。

要約すると、このエラーを解決するときは、データが外部キー制約の条件を満たしていること、および対応する主キーがメイン テーブルに存在することを確認する必要があります。データとテーブルの構造を注意深く確認し、正しい順序でデータを挿入または更新することで、この問題を正常に解決できます。

この記事の内容が、「子行を追加または更新できません: 外部キー制約が失敗しました」エラーの解決に役立つことを願っています。同様の問題が発生した場合は、特定の状況に基づいて適切な解決策を講じ、上記のコード サンプルを参照してください。 MySQL データベースの運用を頑張ってください。

以上が子行を追加または更新できません: 外部キー制約が失敗します - MySQL エラーを解決する方法: 子行に外部キー制約がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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