gpt4 book ai didi

mysql - 错误 1452 : Cannot add or update a child row for A3ENROLL

转载 作者:行者123 更新时间:2023-11-29 10:53:43 25 4
gpt4 key购买 nike

我创建了下表:

A3STUDENT
CREATE TABLE A3STUNDENT(
STD_ID INTEGER NOT NULL,
STD_NAME VARCHAR(30),
STD_MAJOR CHAR(4),
STD_RANK CHAR(2),
CONSTRAINT PK_A3STUDENT PRIMARY KEY (STD_ID)
);

CREATE TABLE A3COURSE(
CRS_TIME VARCHAR(10),
CRS_ROOM CHAR(5),
CRS_ID CHAR(7) NOT NULL,
CONSTRAINT PK_A3COURSE PRIMARY KEY (CRS_ID)
);

CREATE TABLE A3ENROLL(
ENR_GRADE CHAR(1),
STD_ID INTEGER NOT NULL,
CRS_ID CHAR(7) NOT NULL,
CONSTRAINT PK_A3ENROLL PRIMARY KEY (STD_ID, CRS_ID),
CONSTRAINT FK_STD_ENR FOREIGN KEY (STD_ID) REFERENCES A3STUDENT(STD_ID),
CONSTRAINT FK_CRS_ENR FOREIGN KEY (CRS_ID) REFERENCES A3COURSE(CRS_ID)
);

当我插入这样的值时:

INSERT INTO  A3ENROLL VALUES ('A', 100, 'MGMT445');

我收到此错误:

#1452 - Cannot add or update a child row: a foreign key constraint fails (Hess.A3ENROLL, CONSTRAINT FK_CRS_ENR FOREIGN KEY (CRS_ID) REFERENCES A3COURSE (CRS_ID))

我似乎无法理解为什么我的数据无法插入。我忽略了什么?

最佳答案

发生这种情况通常是因为 A3STUNDENTA3COURSE 表中没有数据。

外键关系意味着包含中心数据值的主表和指向父表的具有相同值的子表,任何尝试在子表中创建外键值的 INSERT 或 UPDATE 操作都会被拒绝,如果父表中没有匹配的候选键值。

A3ENROLL100MGMT445作为引用,上述表中不存在。

A3ENROLL表中插入数据之前,必须确保其他表A3STUNDENTA3COURSE中有数据,因为表A3ENROLL 的外键为A3STUNDENTA3COURSE,这意味着您必须在这些表中包含这些数据,例如:

Select * from A3STUNDENT;

STD_ID | STD_NAME | STD_MAJOR | STD_RANK
100 | 'Zack' | ... | ....


Select * from A3COURSE;

CRS_ID | CRS_ROOM | CRS_TIME
MGMT445 | ... | ....

您可以尝试在前面的表中插入数据,然后再在表A3ENROLL中插入。

这里有更多信息:https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

关于mysql - 错误 1452 : Cannot add or update a child row for A3ENROLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com