Можете да направите това с помощта на индекс на изрази:
create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));
Не мисля, че unique
ограничението позволява изрази (и в момента нямате удобен Postgres за тестване), но по същество това е едно и също нещо.