PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come creare un indice univoco in cui l'ordine delle colonne non viene preso in considerazione (impostato?)

Puoi creare un indice su un'espressione, in questo caso least() e greatest() :

create unique index idx_obj1_obj2 on table(least(Object1, Object2), greatest(Object1, Object2));

Nota:c'è una piccola stranezza se le colonne consentono NULL valori. In tal caso, lo stesso valore sarebbe consentito solo una volta, indipendentemente dalla colonna in cui si trova. Questo può essere risolto con un'espressione più complicata, se in realtà è un problema.