您将如何创建对 table 的引用,它有一个元组作为 SQL 中的主键?
How would you create a reference to a table which has a tuple as it's primary key in SQL?
我有 2 个 tables,一个用于电影,另一个用于评论,它们是这样构建的:
create table film
(
title varchar(20) not null,
year int not null,
creator int not null,
primary key(title, year, creator)
)
我被困在如何构建评论 table 中,它有一个电影 object 因为它是外键,因为 table 电影的主键是一个复合的几列。
我尝试这样创建评论 table:
create table review
(
text varchar(100),
title varchar(20) not null references film(title),
year int not null references film(year),
creator int not null references film(creator)
)
这不起作用,因为标题、年份和创作者都没有唯一的限制。自己回过头来看,我就知道这段关系是行不通的。
如有任何见解,我们将不胜感激!
就像主键一样,您不能在列定义子句中执行此操作,您必须将其作为单独的 table 约束子句执行:
create table review (
text varchar(100),
title varchar(20) not null,
year int not null,
creator int not null,
constraint FK_review_film FOREIGN KEY (title, year, creator)
REFERENCES film (title, year, creator)
)
语法是:
create table review
(
text varchar(100),
title varchar(20) not null,
year int not null,
creator int not null,
constraint fk_review_film foreign key (title, year, creator)
references film (title, year, creator)
);
我有 2 个 tables,一个用于电影,另一个用于评论,它们是这样构建的:
create table film
(
title varchar(20) not null,
year int not null,
creator int not null,
primary key(title, year, creator)
)
我被困在如何构建评论 table 中,它有一个电影 object 因为它是外键,因为 table 电影的主键是一个复合的几列。
我尝试这样创建评论 table:
create table review
(
text varchar(100),
title varchar(20) not null references film(title),
year int not null references film(year),
creator int not null references film(creator)
)
这不起作用,因为标题、年份和创作者都没有唯一的限制。自己回过头来看,我就知道这段关系是行不通的。
如有任何见解,我们将不胜感激!
就像主键一样,您不能在列定义子句中执行此操作,您必须将其作为单独的 table 约束子句执行:
create table review (
text varchar(100),
title varchar(20) not null,
year int not null,
creator int not null,
constraint FK_review_film FOREIGN KEY (title, year, creator)
REFERENCES film (title, year, creator)
)
语法是:
create table review
(
text varchar(100),
title varchar(20) not null,
year int not null,
creator int not null,
constraint fk_review_film foreign key (title, year, creator)
references film (title, year, creator)
);