我已經使用了不同的數據庫以及比我得到錯誤的表格還多的錯誤,但錯誤依然存在......使用alter命令添加外鍵到複合主鍵顯示錯誤1215
這裏有三個表:
表一:
create table a(q int,w int,primary key(q,w));//IMPORTANT:q then w
q和w形成複合主鍵。
表B:
create table b(e int,r int);
表3:
create table c(t int,y int);
alter table b add foreign key(e) references a(q);
Query OK, 0 rows affected (0.16 sec)
該改變命令使Ë作爲外鍵表中的( '第一' 主鍵)的Q值。
如果我試圖讓其他屬性爲外鍵的第二主鍵即 'W',它顯示錯誤1215
alter table c add foreign key(t) references a(w);
ERROR 1215(HY000):無法添加外鍵約束
爲什麼不能採取「T」的外鍵,即「W」「第二」的主鍵。 「我可以讓它們中的任何一個作爲第一個主鍵(q)的外鍵,但是它們都不能作爲第二個(w)」。
這可能會讓人困惑,但是當我在創建表格a時只通過改變(q,w)到(w,q)來刪除並創建所有'em時,w可以被其他人引用而不是a。
create table a(q int,w int,primary key(w,q));
alter table c add foreign key(t) references a(w);
Query OK, 0 rows affected (0.16 sec)
alter table b add foreign key(e) references a(q);
ERROR 1215(HY000):無法添加外鍵約束
請幫我....花了整整一天的me..but我做不到找到它發生的原因...
編輯你的文章,這樣的sql語句實際上可讀請... – Joe
因此'alter table b添加外鍵(e)引用a(q);'實際上_valid syntax_,儘管'q'只是一個一個複合PK的一部分!我不得不測試它以確保我仍然不相信我的眼睛! _僅限於MySQL!_ :)) – geomagas