PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment créer un index unique où l'ordre des colonnes n'est pas pris en compte (set ?)

Vous pouvez créer un index sur une expression, dans ce cas least() et greatest() :

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

Remarque :il y a une légère bizarrerie si les colonnes autorisent NULL valeurs. Dans ce cas, la même valeur ne serait autorisée qu'une seule fois, quelle que soit la colonne dans laquelle elle se trouve. Cela peut être résolu avec une expression plus compliquée, si c'est réellement un problème.