MySQL使用多个外键创建表

时间:2017-11-11 14:47:24

标签: mysql foreign-keys many-to-many

我想创建一个包含多个不同表的多个外键的表(因为关系是多对多)。

#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):无法添加外键约束

1 个答案:

答案 0 :(得分: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?