श्रेणी प्रकारों में निचली और ऊपरी सीमा होती है, जिसे शामिल या बाहर किया जा सकता है। विशिष्ट उपयोग मामला (और श्रेणी प्रकारों के लिए डिफ़ॉल्ट) शामिल है निचला और बहिष्कृत करें ऊपरी सीमा।
ओवरलैपिंग . को छोड़कर सीमा स्पष्ट प्रतीत होती है। मैनुअल में एक अच्छा कोड उदाहरण है
इसके अलावा, एक और बहिष्करण बाधा उत्पन्न करें जो आसन्न ऑपरेटर को नियोजित करता है -|-
आसन्न . को भी बाहर करने के लिए प्रविष्टियाँ। दोनों GiST . पर आधारित होने चाहिए GIN के रूप में अनुक्रमणिका वर्तमान में इसके लिए समर्थित नहीं है।
इसे साफ रखने के लिए, मैं [)
enforce को लागू करूंगा CHECK
. के साथ सभी प्रविष्टियों के लिए सीमा (निचले और ऊपरी को छोड़कर) रेंज फ़ंक्शंस का उपयोग करने में बाधा:
CREATE TABLE tbl (
tbl_id serial PRIMARY KEY
, tsr tsrange
, CONSTRAINT tsr_no_overlap EXCLUDE USING gist (tsr WITH &&)
, CONSTRAINT tsr_no_adjacent EXCLUDE USING gist (tsr WITH -|-)
, CONSTRAINT tsr_enforce_bounds CHECK (lower_inc(tsr) AND NOT upper_inc(tsr))
);
db<>यहां बेला करें
(Old SQL Fiddle)
<उप>दुर्भाग्य से, यह दो बनाता है दोनों बहिष्करण बाधाओं को लागू करने के लिए समान जीआईएसटी इंडेक्स, जहां एक तार्किक रूप से पर्याप्त होगा। ऐसा लगता है कि यह वर्तमान कार्यान्वयन (कम से कम 11 पोस्टग्रेज तक) की कमी है।