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.