Anda dapat melakukan ini menggunakan indeks pada ekspresi:
create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));
Saya tidak berpikir unique
batasan mengizinkan ekspresi (dan tidak memiliki Postgres yang nyaman untuk diuji saat ini), tetapi ini pada dasarnya adalah hal yang sama.