エラー 1452: 子行を追加または更新できません: 外部キー制約が失敗しました 質問する

エラー 1452: 子行を追加または更新できません: 外部キー制約が失敗しました 質問する

以下に示すように、MySQL Workbench でテーブルを作成しました。

ORDRE テーブル:

CREATE TABLE Ordre (
  OrdreID   INT NOT NULL,
  OrdreDato DATE DEFAULT NULL,
  KundeID   INT  DEFAULT NULL,
  CONSTRAINT Ordre_pk PRIMARY KEY (OrdreID),
  CONSTRAINT Ordre_fk FOREIGN KEY (KundeID) REFERENCES Kunde (KundeID)
)
  ENGINE = InnoDB;

製品表:

CREATE TABLE Produkt (
  ProduktID          INT NOT NULL,
  ProduktBeskrivelse VARCHAR(100) DEFAULT NULL,
  ProduktFarge       VARCHAR(20)  DEFAULT NULL,
  Enhetpris          INT          DEFAULT NULL,
  CONSTRAINT Produkt_pk PRIMARY KEY (ProduktID)
)
  ENGINE = InnoDB;

ORDRELINJEテーブル:

CREATE TABLE Ordrelinje (
  Ordre         INT NOT NULL,
  Produkt       INT NOT NULL,
  AntallBestilt INT DEFAULT NULL,
  CONSTRAINT Ordrelinje_pk PRIMARY KEY (Ordre, Produkt),
  CONSTRAINT Ordrelinje_fk FOREIGN KEY (Ordre) REFERENCES Ordre (OrdreID),
  CONSTRAINT Ordrelinje_fk1 FOREIGN KEY (Produkt) REFERENCES Produkt (ProduktID)
)
  ENGINE = InnoDB;

ORDRELINJEテーブルに値を挿入しようとすると、次のようになります:

エラー コード: 1452。子行を追加または更新できません: 外部キー制約が失敗しました ( srdjank. Ordrelinje、CONSTRAINT Ordrelinje_fkFOREIGN KEY ( Ordre) REFERENCES Ordre( OrdreID))

このトピックに関する他の投稿も見ましたが、見つかりません。何か見落としているのでしょうか、それとも何をすればよいのかわかりませんか?

ベストアンサー1

出典FOREIGN KEY制約の使用

外部キー関係には、中心となるデータ値を保持する親テーブルと、その親を指す同一の値を持つ子テーブルが含まれます。FOREIGN KEY 句は子テーブルで指定されます。

親テーブルに一致する候補キー値がない場合、子テーブルに外部キー値を作成しようとする INSERT または UPDATE 操作はすべて拒否されます。

したがって、このエラーは基本的に、一致する行 (OrderID) がテーブルに存在しない行をテーブルにError Code: 1452. Cannot add or update a child row: a foreign key constraint fails追加しようとしていることを意味します。OrdrelinjeOrdre

まずテーブルに行を挿入する必要がありますOrdre

おすすめ記事