以下に示すように、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
、CONSTRAINTOrdrelinje_fk
FOREIGN KEY (Ordre
) REFERENCESOrdre
(OrdreID
))
このトピックに関する他の投稿も見ましたが、見つかりません。何か見落としているのでしょうか、それとも何をすればよいのかわかりませんか?
ベストアンサー1
外部キー関係には、中心となるデータ値を保持する親テーブルと、その親を指す同一の値を持つ子テーブルが含まれます。FOREIGN KEY 句は子テーブルで指定されます。
親テーブルに一致する候補キー値がない場合、子テーブルに外部キー値を作成しようとする INSERT または UPDATE 操作はすべて拒否されます。
したがって、このエラーは基本的に、一致する行 (OrderID) がテーブルに存在しない行をテーブルにError Code: 1452. Cannot add or update a child row: a foreign key constraint fails
追加しようとしていることを意味します。Ordrelinje
Ordre
まずテーブルに行を挿入する必要がありますOrdre
。