Bạn có thể thực hiện việc này bằng cách sử dụng chỉ mục trên các biểu thức:
create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));
Tôi không nghĩ unique
ràng buộc cho phép các biểu thức (và không có Postgres thuận tiện để kiểm tra ngay bây giờ), nhưng về cơ bản đây là điều tương tự.