Một biến thể của giải pháp Neil không cần phần mở rộng là:
create table friendz (
from_id int,
to_id int
);
create unique index ifriendz on friendz(greatest(from_id,to_id), least(from_id,to_id));
Tuy nhiên, giải pháp của Neil cho phép bạn sử dụng một số lượng cột tùy ý.
Cả hai chúng tôi đều dựa vào việc sử dụng các biểu thức để xây dựng chỉ mục được lập thành tài liệuhttps://www.postgresql.org/docs/current/indexes-expressional.html