Представьте, что у вас есть простая таблица:
name | is_active
----------------
A | 0
A | 0
B | 0
C | 1
... | ...
Мне нужно создать специальное уникальное ограничение, которое не выполняется в следующей ситуации: разные is_active
значения не могут сосуществовать для одного и того же name
значения.
Пример допустимого условия:
Примечание: простой многостолбцовый уникальный индекс не допускает такой комбинации.
A | 0
A | 0
B | 0
Пример допустимого условия:
A | 0
B | 1
Пример сбойного условия:
A | 0
A | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
В идеале мне нужно уникальное ограничение или уникальный частичный индекс. Триггеры для меня более проблематичны.
Двойной A,0
разрешен, но (A,0) (A,1)
нет.
ERROR: data type boolean has no default operator class for access method "gist"