आप अपना अलग timestamp
रख सकते हैं कॉलम और अभी भी एक बहिष्करण बाधा का उपयोग करते हैं एक व्यंजक पर:
CREATE TABLE tbl (
tbl_id serial PRIMARY KEY
, starts_at timestamp
, ends_at timestamp
, EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&) -- no overlapping
);
एक tsrange
का निर्माण करना स्पष्ट सीमा के बिना मान tsrange(starts_at, ends_at)
. के रूप में स्वचालित रूप से डिफ़ॉल्ट सीमाएं मान लेता है:निचले और ऊपरी को छोड़कर - '[)'
, जो आमतौर पर सबसे अच्छा होता है।
एसक्यूएल फिडल.
संबंधित:
- पोस्टग्रेएसक्यूएल में EXCLUDE के साथ आसन्न/अतिव्यापी प्रविष्टियों को रोकना
मौजूदा तालिका में बाधा जोड़ें
ALTER TABLE tbl ADD CONSTRAINT tbl_no_overlapping_time_ranges
EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&)
सिंटैक्स विवरण CREATE TABLE
. के समान हैं ।