पोस्टग्रेज़ तक 11 जेनरेट किए गए कॉलम समर्थित नहीं हैं - जैसा कि SQL मानक में परिभाषित किया गया है और DB2, MySQL और Oracle सहित कुछ RDBMS द्वारा कार्यान्वित किया गया है। न ही समान "गणना किए गए स्तंभ" SQL सर्वर का।
STORED
जेनरेट किए गए कॉलम पोस्टग्रेस 12 . के साथ पेश किए गए हैं . तुच्छ उदाहरण:
CREATE TABLE tbl (
int1 int
, int2 int
, product bigint GENERATED ALWAYS AS (int1 * int2) STORED
);
db<>फिडल यहाँ
VIRTUAL
उत्पन्न कॉलम अगले पुनरावृत्तियों में से एक के साथ आ सकते हैं। (पोस्टग्रेज 14 में अभी तक नहीं)।
संबंधित:
- फ़ंक्शन कॉल के लिए विशेषता संकेतन त्रुटि देता है
तब तक , आप VIRTUAL
. का अनुकरण कर सकते हैं फ़ंक्शन . के साथ जेनरेट किए गए कॉलम विशेषता संकेतन . का उपयोग करना (tbl.col
) जो आभासी जेनरेट किए गए कॉलम की तरह दिखता है और काम करता है . यह एक वाक्य रचना विषमता है जो ऐतिहासिक कारणों से पोस्टग्रेज में मौजूद है और मामले में फिट होने के लिए होती है। इस संबंधित उत्तर में कोड उदाहरण हैं :
- सामान्य क्वेरी को कॉलम के रूप में स्टोर करें?
एक्सप्रेशन (कॉलम की तरह दिखने वाला) SELECT * FROM tbl
. में शामिल नहीं है , हालांकि। आपको इसे हमेशा स्पष्ट रूप से सूचीबद्ध करना होगा।
मेल खाने वाले एक्सप्रेशन इंडेक्स के साथ भी समर्थित किया जा सकता है - बशर्ते फ़ंक्शन IMMUTABLE
. हो . पसंद:
CREATE FUNCTION col(tbl) ... AS ... -- your computed expression here
CREATE INDEX ON tbl(col(tbl));
विकल्प
वैकल्पिक रूप से, आप समान कार्यक्षमता को VIEW
. के साथ कार्यान्वित कर सकते हैं , वैकल्पिक रूप से अभिव्यक्ति अनुक्रमणिका के साथ युग्मित। फिर SELECT *
उत्पन्न कॉलम शामिल कर सकते हैं।
"जारी" (STORED
) गणना किए गए कॉलम को ट्रिगर के साथ कार्यात्मक रूप से समान तरीके से लागू किया जा सकता है।
भौतिक विचार एक निकट से संबंधित अवधारणा है, जिसे पोस्टग्रेज 9.3 के बाद से लागू किया गया है।
पहले के संस्करणों में कोई भी एमवी को मैन्युअल रूप से प्रबंधित कर सकता है।