2013-12-13 32 views
0

我正在使用MySQL。改變表格以添加外鍵

我有一個名爲school的現有表,其中填充了數百行數據。現在我有另一個表名爲student,它的主鍵是「sid」。

我想alter我的school表有一個外鍵引用student

我嘗試以下SQL語句:

ALTER TABLE school ADD FOREIGN KEY (sid) REFERENCES student(sid); 

,但我得到的錯誤:

ERROR 1072 (42000): Key column 'sid' doesn't exist in table 

什麼是改變表添加一個外鍵到另一個表中的正確方法是什麼?

回答

1

您必須首先在表格中添加列sid

ALTER TABLE school ADD COLUMN sid [INT, VARCHAR2(10]; 
ALTER TABLE school ADD FOREIGN KEY (sid) REFERENCES student(sid); 

PS:我把[INT, VARCHAR2(10],因爲我不知道什麼類型的學生(SID)是。只要改變到正確的一個。

+0

您應該首先在該列上添加一個索引,我認爲? – Nanne

+0

我認爲這取決於使用。如果需要的話,通常會添加。 – Minoru

+0

嗯,我已經看過它:它不取決於實際使用,它取決於你使用的引擎。如果您使用InnoDB,則只能將外鍵添加到索引列。 (請參閱http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html:_InnoDB允許外鍵引用任何索引列或一組列,但在引用表中,必須有一個索引,其中列出的引用列以相同順序列出的第一列._) – Nanne

1

你想在哪裏鏈接你的外鍵?

似乎你錯過了在校表對連結的關鍵在於:

至於我能想象你想一個學生鏈接到他的學校。

所以我會做的是一列添加到學生表:

ALTER TABLE STUDENT 
ADD COLUMN SCHOOL_ID INT NOT NULL; 

然後我想創建學生表的外鍵指向學校

ALTER TABLE STUDENT 
ADD FOREIGN KEY (F_SCHOOL_ID) REFERENCES SCHOOL(ID); 

這是最好的方式,而不是相反。