आप एक बहिष्करण बाधा का उपयोग कर सकते हैं जिसके लिए केवल एक ही अनुक्रमणिका की आवश्यकता होती है:
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