2015-11-27 242 views
0

我有一個數據庫'學生'。有4桌'信息','流','級'&'標記'。帶外鍵的複合主鍵

  • INFO有3列ID,NAME,STR_NO。
  • STREAM有2列STR_NO,STR_NAME。
  • GRADE有2列PERCENT,GRADE。
  • MARKS有3列ID,STR_NO,TOTAL_MARK,FULL_MARK

我已經宣佈的信息表即

PRIMARY KEY(ID, STR_NO) 

複合主鍵但是,當我宣佈投產的外鍵即

FOREIGN KEY(STR_NO) REFERENCES INFO(ID,STR_NO) 

它給出錯誤

爲什麼和如何解決這個問題

+3

外鍵必須引用**主鍵的所有**列。 –

+1

這意味着您必須在Stream表上使用相同的兩列作爲外鍵(ID和STR_NO) –

回答

0

如果我理解你的表格代表了什麼,它看起來像你有外鍵關係倒退。它看起來像STR_NO應該是STREAM主鍵,並且應該有一個外鍵約束上INFO要求INFO.STR_NOSTREAM.STR_NO有一個匹配的值 - 或者,在代碼

ALTER TABLE INFO 
    ADD CONSTRAINT INFO_FK1 
    FOREIGN KEY (STR_NO) REFERENCES STREAM(STR_NO); 

好運。

0

這樣做:

ALTER TABLE STREAM ADD(ID NUMBER) 

ALTER TABLE INFO 
    ADD CONSTRAINT INFO_FK1 
    FOREIGN KEY (ID, STR_NO) REFERENCES STREAM(ID, STR_NO); 

由於表信息有複合主鍵ID, STR_NO,然後給它的任何引用還必須包括兩列。

欲瞭解更多詳情,see here