Immagina di avere una tabella semplice:
name | is_active
----------------
A | 0
A | 0
B | 0
C | 1
... | ...
Devo creare uno speciale vincolo unico che non riesce nella seguente situazione: is_active
valori diversi non possono coesistere per lo stesso name
valore.
Esempio di condizione consentita:
Nota: un semplice indice unico a più colonne non consentirà una combinazione come questa.
A | 0
A | 0
B | 0
Esempio di condizione consentita:
A | 0
B | 1
Esempio di condizione non riuscita:
A | 0
A | 1
-- should be prevented, because `A 0` exists
-- same name, but different `is_active`
Idealmente, ho bisogno di un vincolo univoco o di un indice parziale univoco. I trigger sono più problematici per me.
Doppio A,0
permesso, ma (A,0) (A,1)
non lo è.
ERROR: data type boolean has no default operator class for access method "gist"