Postgres: принудительно заставить группу ассоциаций ʻin_to` иметь ровно один столбец в любое время со значением `true` - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть набор ассоциаций, и я хочу убедиться, что в наборе есть ровно 1 вхождение значения true в столбце x в любой момент времени.

Например.

Если Business has_many Contacts с логическим столбцом с именем `is_primary '

, и у меня есть 3 контакта с общим business_id ...

Как сделать Я заверяю, что данные никогда не существуют в состоянии, отличном от того, где точно один из этих 3 контактов имеет значение is_primary true?

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете использовать частичный уникальный индекс :

create unique index unq_business_contact
    on business(contact)
    where is_primary;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...