Du kan gøre dette ved at bruge et indeks på udtryk:
create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));
Jeg tror ikke, den unique
begrænsning tillader udtryk (og har ikke en praktisk Postgres at teste på lige nu), men dette er grundlæggende det samme.