Mysql 错误1452:无法添加或更新A3ENROLL的子行
我创建了以下表格:Mysql 错误1452:无法添加或更新A3ENROLL的子行,mysql,Mysql,我创建了以下表格: 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 CH
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-无法添加或更新子行:外键约束失败(Hess
A3ENROLL
,约束FK\u CRS\u ENR
外键
(CRS\u ID
)参考资料a3课程
(CRS\u ID
)
我似乎不明白为什么我的数据不能插入。我忽略了什么?这通常是因为
a3student
和A3COURSE
表中没有数据
外键关系表示包含中心数据值的主表和具有指向父表的相同值的子表,如果父表中没有匹配的候选键值,则拒绝尝试在子表中创建外键值的任何插入或更新操作
表A3ENROLL
作为参考100
和MGMT445
,在上述表格中不存在
在A3ENROLL
表中插入数据之前,必须确保其他表A3STUNDENT
和A3COURSE
中有数据,因为表A3ENROLL
有一个外键A3STUNDENT
和A3COURSE
,这意味着这些表中必须有这些数据,例如:
Select * from A3STUNDENT;
STD_ID | STD_NAME | STD_MAJOR | STD_RANK
100 | 'Zack' | ... | ....
Select * from A3COURSE;
CRS_ID | CRS_ROOM | CRS_TIME
MGMT445 | ... | ....
您可以尝试在前面的表中插入数据,然后在表中插入A3ENROLL
这里有更多信息: