/ / postgresql 9.2 में tztsrange में डिफ़ॉल्ट मान के रूप में अब () का उपयोग कर - postgresql, postgresql-9.2

postgresql 9.2 में tztsrange में डिफ़ॉल्ट मान के रूप में अब () का उपयोग कर - postgresql, postgresql-9.2

क्या यह परिभाषित करना संभव है now() के लिए एक प्रारंभ मूल्य के रूप में tztsrange postgresql 9.2 में डेटा प्रकार पेश किया गया? मैंने इसका इस्तेमाल करने की कोशिश की

ALTER TABLE test_table ALTER COLUMN tstz_range SET DEFAULT "[now,infinity]"::tstzrange;

लेकिन ऐसी अभिव्यक्ति में now() तालिका को बदलकर वर्तमान समय टिकट में मूल्यांकन किया जाता है और डिफ़ॉल्ट मान हमेशा के बावजूद होता है:

"["2012-09-18 15:00:47.334196+02",infinity]"::tstzrange;

उत्तर:

उत्तर № 1 के लिए 6

जैसा कि कहा गया दस्तावेज में आप अनुसार कार्य के साथ एक सीमा परिभाषित कर सकते हैं:

SELECT tstzrange(now(), "infinity", "[)");
┌────────────────────────────────────────────┐
│                 tstzrange                  │
├────────────────────────────────────────────┤
│ ["2012-09-18 15:33:50.186351+00",infinity) │
└────────────────────────────────────────────┘

तो आप फ़ंक्शन का उपयोग करके आसानी से डिफ़ॉल्ट मान बना सकते हैं:

CREATE TABLE plop (
id serial PRIMARY KEY,
some_range tstzrange DEFAULT tstzrange(now(), "infinity", "[)")
);