Imagine que você tem uma tabela simples:
name | is_active
----------------
A | 0
A | 0
B | 0
C | 1
... | ...
Preciso criar uma restrição única e especial que falha na seguinte situação: is_active
valores diferentes não podem coexistir para o mesmo name
valor.
Exemplo de condição permitida:
Nota: o índice único simples de várias colunas não permitirá combinações como esta.
A | 0
A | 0
B | 0
Exemplo de condição permitida:
A | 0
B | 1
Exemplo de condição com falha:
A | 0
A | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
Idealmente, preciso de restrição ou índice parcial exclusivo. Os gatilhos são mais problemáticos para mim.
Duplo A,0
permitido, mas (A,0) (A,1)
não é.
ERROR: data type boolean has no default operator class for access method "gist"