Можете да използвате ограничение за изключване което изисква само един индекс:
alter table transaction_links
add constraint check_tx
exclude using gist ( (array[send_id, receive_id]) with &&);
&&
е операторът за "припокриване" за масиви - което означава "има общи елементи, независимо от реда на елементите в масива. В този случай ограничението предотвратява вмъкването на всеки ред, където всяка стойност на (send_id, receive_id)
се появява в друг ред на таблицата (независимо от колоната).
Трябва обаче intarray разширение за това.
Онлайн пример:https://rextester.com/QOYS23482