Imagina que tienes una tabla simple:
name | is_active
----------------
A | 0
A | 0
B | 0
C | 1
... | ...
Necesito crear una restricción única especial que falla en la siguiente situación: diferentes is_active
valores no pueden coexistir para el mismo name
valor.
Ejemplo de condición permitida:
Nota: un índice único de varias columnas simple no permitirá combinaciones como esta.
A | 0
A | 0
B | 0
Ejemplo de condición permitida:
A | 0
B | 1
Ejemplo de condición fallida:
A | 0
A | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
Idealmente, necesito una restricción única o un índice parcial único. Los disparadores son más problemáticos para mí.
Doble A,0
permitido, pero (A,0) (A,1)
no lo es.
ERROR: data type boolean has no default operator class for access method "gist"