En variant på Neils lösning som inte behöver en förlängning är:
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));
Neils lösning låter dig dock använda ett godtyckligt antal kolumner.
Vi förlitar oss båda på att använda uttryck för att bygga indexet som är dokumenterat https://www.postgresql.org/docs/current/indexes-expressional.html