2017-01-22 36 views
0

Im有一些關鍵引用問題。這個錯誤來自當我嘗試將數據插入到表標誌添加主鍵/外鍵並引用其他表格

INSERT INTO Mark(examID, studentID, result, occured, noOFAttempts) 
    VALUES ('B10', '1', '67', '11-JUL-07', '1'); 

我得到的錯誤:

integrity constraint violated - parent key 
not found 

語境:

的表格考試和學生代表約大學考試和 數據學生們。學生的考試成績包括 學生在考試中的考試次數(noOfAttempts),通過使用來自考試的ID列和 學生的ID列記錄在 表中。這兩個ID列都有唯一的值。學生只有每次考試記錄的最新成績 。

編寫一個SQL命令來創建標記表。包括主鍵 和上面指定的表格中明顯的外鍵。

CREATE TABLE Exam (
id VARCHAR(255), 
subject VARCHAR(255), 
noOfStudents INT, 
PRIMARY KEY (id)); 

-

CREATE TABLE Student (
id INT, 
name VARCHAR(255), 
PRIMARY KEY (id)); 

-

CREATE TABLE Mark (
examID VARCHAR(255), 
studentID INT, 
result INT, 
occured DATE, 
noOFAttempts VARCHAR(255), 
FOREIGN KEY (noOFAttempts) REFERENCES Exam(id), 
FOREIGN KEY (noOFAttempts) REFERENCES Student(id)); 

如何解決我知道它有錯誤引用做錯誤,謝謝

回答

2

一些Mark背後的邏輯桌子對我來說很有意義。它將考試與參加考試的學生相關聯。但是使noOfAttempts成爲外鍵的動機似乎沒有多大用處。 表中的兩個外鍵,examIDstudentID,這兩個字段的組合也是主鍵。這裏是什麼Mark定義可能看起來像要避免這些錯誤:

CREATE TABLE Mark (
    examID VARCHAR(255), 
    studentID INT, 
    result INT, 
    occured DATE, 
    noOFAttempts VARCHAR(255), 
    FOREIGN KEY (examID) REFERENCES Exam(id), 
    FOREIGN KEY (studentID) REFERENCES Student(id), 
    PRIMARY KEY (examID, studentID) 
) 

同樣,我看不出做noOfAttempts任何形式的關鍵點,而我認爲這應該只是一個定期專欄Mark表。每個請求

編輯從戈登:

當你做你的插入,你試圖創建Mark記錄,其中提到並不存在父記錄。對於原始表格,您試圖插入'1'作爲noOfAttempts,但該表格不存在於Exam和/或Student表格中。

+0

@GordonLinoff更新,感謝您的警惕。 –

+0

感謝Tim和@GordonLinoff,這使我的錯誤變得清晰,使用數據更新了表格並解決了問題。不要覺得我完全清醒,但哈哈。再次感謝 –