2010-02-17 89 views
0

我想在我的PostgreSQL 8.4數據庫的表中添加一個外鍵約束,但它作爲目標字段失敗,雖然是多列主鍵的一部分關鍵,本身並不是唯一的。在PostgreSQL中爲'部分'主鍵添加外鍵約束

該數據庫具有以下結構:

表1(主ID的名稱):

PrimaryType, Name 
[Primary key = "PrimaryType"] 

表2(對於每種類型的主ID的子ID的名稱):

PrimaryType, SubType, Name 
[Primary key = "PrimaryType, SubType"] 
[Foreign key = "Table2.PrimaryType = Table1.PrimaryType"] 

表3(包括小學和兒童ID的日誌):

PrimaryType, SubType, DATA1, DATA2, ..., DATAN 
[Foreign key = "Table3.PrimaryType = Table1.PrimaryType" AND "Table3.SubType = Table2.SubType"] 

顯然,表3的外鍵的第二部分是導致問題的原因。我只需要確保日誌中的主要和子類型ID對是有效的組合。

在此先感謝。

回答

2

對於表3的外鍵,更改:

foreign key PrimaryType references Table1(PrimaryType) 
foreign key SubType references Table2(Subtype) 

foreign key (PrimaryType, SubType) references Table2(PrimaryType, SubTYpe) 
+0

感謝,這工作 – James 2010-02-17 13:59:29