2017-04-10 71 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

相關問題