Du kan bruge en ekskluderingsbegrænsning som kun kræver et enkelt indeks:
alter table transaction_links
add constraint check_tx
exclude using gist ( (array[send_id, receive_id]) with &&);
&&
operator er "overlaps"-operatoren for arrays - hvilket betyder "har elementer til fælles, uanset rækkefølgen af elementerne i arrayet. I dette tilfælde forhindrer begrænsningen at indsætte en række, hvor en hvilken som helst værdi af (send_id, receive_id)
vises i en anden række i tabellen (uanset kolonnen).
Du har dog brug for intarray udvidelse til det.
Online eksempel:https://rextester.com/QOYS23482