««« | »»»
Vincoli di unicità con i NULL
Anche se non amo i NULL, questo “trucco” che ho letto sulla mailing list di PostgreSQL è troppo carino per non citarlo.
Qual è il problema?
Come dice il titolo, vogliamo imporre un vincolo di unicità su più colonne, una delle quali può essere NULL. In PostgreSQL, se abbiamo tre colonne A, B e C — con C che può essere NULL — e creiamo uno UNIQUE INDEX con tutte e tre, posso inserire due record con valori duplicati per A e B.
Salvati dagli indici parziali
La soluzione, una volta tanto, è semplice: basta creare un indice parziale:
CREATE INDEX idx ON table_name(A,B) WHERE (C IS NULL);
Per proseguire
Commenti e trackback sono disabilitati.