Добавление ограничения внешнего ключа к «частичному» первичному ключу в PostgreSQL - PullRequest
0 голосов
/ 17 февраля 2010

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

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

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

PrimaryType, Name
[Primary key = "PrimaryType"]

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

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 основного и подтипа в журнале является допустимой комбинацией.

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

1 Ответ

2 голосов
/ 17 февраля 2010

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

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

на

foreign key (PrimaryType, SubType) references Table2(PrimaryType, SubTYpe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...