MySQL创建多个外键的表
问题描述:
我想创建一个表有多个外键到多个不同的表(因为关系是多对多的)。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):无法添加外键约束
答
外键是其他表的完整的关键 - 你不能只用它的一半作为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?
好。所以我必须编码这个呢? 外键(v1,v2)引用t2(v1,v2) – billyl320
已编辑:添加了2个相关的SO答案。 –
gotcha - 谢谢!代码现在正在运行。 – billyl320