PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como criar um índice exclusivo onde a ordem das colunas não é levada em consideração (definida?)


Você pode criar um índice em uma expressão, neste caso least() e greatest() :
create unique index idx_obj1_obj2 on table(least(Object1, Object2), greatest(Object1, Object2));

Nota:há uma pequena estranheza se as colunas permitirem NULL valores. Nesse caso, o mesmo valor só seria permitido uma vez, independentemente da coluna em que estiver. Isso pode ser corrigido com uma expressão mais complicada, se for realmente um problema.