Puede crear un índice en una expresión, en este caso least()
y greatest()
:
create unique index idx_obj1_obj2 on table(least(Object1, Object2), greatest(Object1, Object2));
Nota:hay una pequeña rareza si las columnas permiten NULL
valores. En ese caso, el mismo valor solo se permitiría una vez, independientemente de la columna en la que se encuentre. Esto se puede solucionar con una expresión más complicada, si realmente es un problema.