2010-02-17 5 views
0

Я пытаюсь добавить ограничение внешнего ключа к таблице в моей базе данных PostgreSQL 8.4, но она не работает в качестве целевого поля, хотя и является частью многоколоночного первичного ключа ключ, сам по себе не уникален.Добавление ограничения внешнего ключа в «частичный» первичный ключ в PostgreSQL

В базе данных имеет следующую структуру:

В таблице 1 (имена первичных идентификаторов):

PrimaryType, Name 
[Primary key = "PrimaryType"] 

Таблица 2 (имена идентификаторов дочерних для каждого типа первичного ID):

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

Таблица 3 (журналы, содержащие первичный и детский идентификаторы):

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

Очевидно, что вторая часть внешнего ключа для таблицы 3 является причиной проблемы. Мне просто нужно убедиться, что пара ИД первичного и подтипа в журнале является допустимой комбинацией.

Заранее спасибо.

ответ

2

Для Таблица 3 Внешнеторговый ключ, изменения:

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

к

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

спасибо, что работал – James

Смежные вопросы