2017-04-10 69 views
0

我已经创建了如下表添加或更新子行:错误1452:无法A3ENROLL

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))

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

回答

1

这通常是因为A3STUNDENTA3COURSE表中没有数据。

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

A3ENROLL的参考文献100MGMT445不在上述表格中。

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

​​

你可以试试前面表格中插入数据,然后在表中插入A3ENROLL

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

相关问题