ठीक है, मैंने यह करना समाप्त कर दिया:
CREATE TABLE test (
from_ts TIMESTAMPTZ,
to_ts TIMESTAMPTZ,
account_id INTEGER DEFAULT 1,
product_id INTEGER DEFAULT 1,
CHECK ( from_ts < to_ts ),
CONSTRAINT overlapping_times EXCLUDE USING GIST (
account_id WITH =,
product_id WITH =,
period(from_ts, CASE WHEN to_ts IS NULL THEN 'infinity' ELSE to_ts END) WITH &&
)
);
अनंत, लेन-देन के सबूत के साथ पूरी तरह से काम करता है।
मुझे बस अस्थायी विस्तार स्थापित करना था जो 9.2 पोस्टग्रेज में मूल होने जा रहा है और btree_gist 9.1 CREATE EXTENSION btree_gist;
में एक एक्सटेंशन के रूप में उपलब्ध है।
nb:यदि आपके पास नल टाइमस्टैम्प नहीं है, तो अस्थायी एक्सटेंशन का उपयोग करने की कोई आवश्यकता नहीं है, आप मेरे प्रश्न में निर्दिष्ट बॉक्स विधि के साथ जा सकते हैं।