开发者社区> 问答> 正文

错误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)参考Ordre(OrdreID))

我看过有关该主题的其他文章,但没有运气。我正在监督某件事或任何想法怎么办吗?

展开
收起
保持可爱mmm 2020-05-10 18:55:00 698 0
1 条回答
写回答
取消 提交回答
  • 外键关系涉及一个包含中央数据值的父表,以及一个具有指向其父级的相同值的子表。在子表中指定FOREIGN KEY子句。

    如果在父表中没有匹配的候选键值,它将拒绝任何试图在子表中创建外键值的INSERT或UPDATE操作。

    因此,您的错误Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails实质上意味着,您正在尝试向Ordrelinje表中添加一行,但表中没有匹配的行(OrderID)Ordre。

    您必须首先将行插入到Ordre表中。来源:stack overflow

    2020-05-10 18:55:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载