您将如何创建对 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)
);