繁体   English   中英

如何使复合外键(不是复合主键)在mysql中唯一

[英]how to make a composite foreign key (not composite primary key) as unique in mysql

我有一个表,在那个表中我有一个主键和一个复合外键(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),
)

首先创建两个单个外键,然后使用两个字段创建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中创建复合外键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM