2017-11-11 341 views
0

我想創建一個表有多個外鍵到多個不同的表(因爲關係是多對多的)。MySQL創建多個外鍵的表

#creating t1 
CREATE TABLE t1 
(ID   INT    AUTO_INCREMENT   primary key, 
x1   VARCHAR(50) 
); 

#Creating t2 
CREATE TABLE t2 
(v1  VARCHAR(50), 
v2  VARCHAR(50), 
primary key (v1, v2) 
); 

#creating attended table 
CREATE TABLE t3 
(ID  INT, 
v1   VARCHAR(50), 
v2   VARCHAR(50), 
primary key (ID, v1, v2), 
foreign key(v1)     references t2(v1), 
foreign key(v2)     references t2(v2), 
foreign key(ID)     references t1(ID) 
); 

以上是我的代碼。我沒有創建t1和t2的錯誤。不過,我得到了下面的代碼,當我嘗試創建T3:

ERROR 1215(HY000):無法添加外鍵約束

回答

0

外鍵是其他表的完整的關鍵 - 你不能只用它的一半作爲FK。

t2有一個組合主鍵。當在t3中引用fk時,你需要兩個。

Why use multiple columns as primary keys (composite primary key)

要創建一個複雜的FK看到SQL Server: adding foreign key on multiple columns 或MySQL的看到Multiple-column foreign key in MySQL?

+0

好。所以我必須編碼這個呢? 外鍵(v1,v2)引用t2(v1,v2) – billyl320

+0

已編輯:添加了2個相關的SO答案。 –

+0

gotcha - 謝謝!代碼現在正在運行。 – billyl320