जबकि एक CHECK
बाधा तालिका की एक पंक्ति के आधार पर एक अभिव्यक्ति का मूल्यांकन करती है, एक EXCLUDE
बाधा तालिका में दो पंक्तियों की तुलना का मूल्यांकन करती है। इसे एक सामान्यीकृत UNIQUE
like की तरह समझें बाधा:"कोई भी दो पंक्तियाँ समान नहीं हो सकती" के बजाय, आप "कोई भी दो पंक्तियाँ ओवरलैप नहीं हो सकतीं", या यहाँ तक कि "कोई भी दो पंक्तियाँ भिन्न नहीं हो सकतीं" जैसी बातें कह सकती हैं। ".
मूल्यों के हर संभावित संयोजन की जाँच किए बिना इसे प्राप्त करने के लिए, इसे एक उपयुक्त सूचकांक संरचना की आवश्यकता होती है जो इसे एक पंक्ति डालने या अपडेट करने पर संभावित उल्लंघनों को खोजने की अनुमति देती है। यह वही है जो gist
. है घोषणा का हिस्सा संदर्भित करता है:एक विशेष प्रकार की अनुक्रमणिका जिसका उपयोग समानता के अलावा अन्य कार्यों को गति देने के लिए किया जा सकता है।
घोषणा का शेष भाग ही बाधा है:c
क्या कॉलम का परीक्षण किया जा रहा है, और &&
वह ऑपरेटर है जिसे पंक्तियों के किसी भी जोड़े के लिए सही नहीं लौटना चाहिए। इस मामले में, &&
"ओवरलैप्स" ऑपरेटर है जैसा कि ज्यामितीय ऑपरेटर मैनुअल पेज पर सूचीबद्ध हैए> ।
तो एक साथ रखें, बाधा EXCLUDE USING gist (c WITH &&)
"c
. के कोई दो मान नहीं के रूप में अनुवाद करता है एक दूसरे को ओवरलैप करना चाहिए (अधिक सटीक रूप से, A.c && B.c
सभी अलग-अलग पंक्तियों के लिए झूठी या अशक्त लौटानी चाहिए A
और B
), और कृपया एक gist
. का उपयोग करें इस बाधा की निगरानी के लिए अनुक्रमणिका"।