我在MySQL Workbench中创建了表,如下所示:
订单表:
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 table:
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
表时,我得到:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (
srdjank
.Ordrelinje
, CONSTRAINTOrdrelinje_fk
FOREIGN KEY (Ordre
) REFERENCESOrdre
(OrdreID
))
我看过其他关于这个话题的帖子,但是运气不好。 我是在监督什么还是知道该怎么做?
取自Using FOREIGN KEY Constraints
因此,您的错误
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails
实质上意味着,您正在尝试向Ordrelinje
表中添加一行,而Ordre
表中没有匹配的行(OrderID)。必须首先将行插入到
Ordre
表中。必须删除子表中与父表主键没有对应外键值的数据。或者删除子表中的所有数据,然后在父表中插入与主键具有相同外键值的新数据。这应该管用。 这里还有一个youtube video
您得到这个约束检查是因为
Ordre
表没有insert命令中提供的引用OrdreID
。要在
Ordrelinje
中插入值,首先必须在Ordre
表中输入值,并在Orderlinje
表中使用相同的OrdreID
。或者,可以删除NOTNULL约束并在其中插入一个空值。
相关问题 更多 >
编程相关推荐