2017-11-11 158 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