2014-11-01 10 views
2

我創建一個表,但是我得到這個錯誤:我在PostgreSQL得到一個錯誤:爲外鍵引用和被引用的列數不同意

- 外鍵引用和被引用的列數不同意。

我不知道如何解決它。我認爲這可能是一個聲明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 
); 

回答

4

這是因爲您沒有指定應該引用的表的特定列名。您的外鍵聲明應如下所示。注意部分,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 

查看Postgres Documentation獲取更多相同的信息。

+0

這解決了這個問題,但我得到另一個錯誤:沒有唯一約束相匹配的參考表「通訊社」給鑰匙。 – blaclotus 2014-11-01 01:27:59

+3

@blaclotus,這是因爲您在'agencia'表中引用的列不是主鍵/唯一鍵。您無法在非關鍵列上創建FK。確保您所引用的列是關鍵列。 – Rahul 2014-11-01 09:01:51

+0

可能會引起,因爲在表 「通訊社」 的問題,我有2個主鍵?//////// 創建表通訊社 ( Nom_agencia VARCHAR(30), Nom_ciutat VARCHAR(30), Adreca的Varchar (30), Telefin Number(9), 主鍵(Nom_agencia,Nom_ciutat), 外鍵(Nom_ciutat)引用刪除級聯上的Ciutat ); – blaclotus 2014-11-01 11:26:01

相關問題