我有一个表,在该表中我有一个主键和一个复合外键(2个外键的组合)。 我想知道如何将复合外键创建为唯一,这意味着我不希望在表中再次复制外键复制?
这是对它的查询
create table official_baby_toys(
official_baby_toys_id int,
baby_id int,
toy_id int,
toy_size_id,
primary key(official_baby_toys_id)
foreign key(baby_id,toy_id) references baby_toy(baby_id,toy_id),
foreign key(toy_size_id) references toy_size(toy_size_id),
)
答案 0 :(得分:1)
首先创建两个单个外键,然后使用两个字段创建UNIQUE KEY:
create table official_baby_toys(
official_baby_toys_id int,
baby_id int,
toy_id int,
toy_size_id,
primary key(official_baby_toys_id)
foreign key(baby_id) references baby_toy(baby_id),
foreign key(toy_id) references baby_toy(toy_id),
foreign key(toy_size_id) references toy_size(toy_size_id),
unique key(baby_id, toy_id)
)
此外,我不了解您的数据库架构,但我觉得baby_id
应该实际引用baby(baby_id)
而不是baby_toy(baby_id)
。
修改强> 您还可以创建复合外键,但您需要首先为这两个字段创建索引(或主键,这也将创建索引):
CREATE TABLE baby_toy (
# other field defs
baby_id int,
toy_id int,
primary key(baby_id, toy_id)
# OR index(baby_id, toy_id)
);
然后在official_baby_toys
中,您应该能够创建复合外键。