我在 PostgreSql 中收到一个错误:外键的引用和引用列数不一致

bla*_*tus 3 sql postgresql foreign-keys

我正在创建一个表,但出现此错误:

  • 外键的引用和引用列的数量不一致。

我不知道如何解决。我认为声明 3 个外键可能有问题,但是,我不确定。

问题是什么?

Create table Trasllat
(
Data Date,
Codi_Empleat Integer,
Nom_agencia Varchar(30),
Data_fi Date,
Primary key (Data, Codi_Empleat),
Foreign key (Data) references Data on delete cascade,
Foreign key (Codi_empleat) references Empleat on delete cascade
Foreign key (Nom_agencia) references Agencia on delete cascade
);
Run Code Online (Sandbox Code Playgroud)

Rah*_*hul 6

那是因为您没有指定它应该引用的表的特定列名。您的外键声明应如下所示。请注意该部分,references Empleat(column_name)它表示列Codi_empleat引用Empleatcolumn_name列。

Foreign key (Data) references Trasllat(Data) on delete cascade,
Foreign key (Codi_empleat) references Empleat(column_name) on delete cascade
Foreign key (Nom_agencia) references Agencia(column_name) on delete cascade
Run Code Online (Sandbox Code Playgroud)

检查Postgres 文档以获取更多信息。

  • @blaclotus,这是因为您在 `agencia` 表中引用的列不是主键/唯一键。您不能在非键列上创建 FK。确保您引用的列是关键列。 (3认同)
  • 是的,这就是问题所在。要引用“Agencia”,您必须同时引用 PK 列和 Trasllat 表中的两个字段,例如“外键 (Nom_agencia, other_column) 引用 Agencia(Nom_agencia, Nom_ciutat)” (2认同)