https://dev.mysql.com /doc/refman/5.7/hi/create-table-generated-columns.html
यह उचित है कि जेनरेट किए गए कॉलम के लिए अभिव्यक्ति केवल का संदर्भ दे सकती है एक ही पंक्ति में कॉलम। जेनरेट किया गया कॉलम सबक्वायरी का उपयोग नहीं कर सकता है, या अन्य तालिकाओं का संदर्भ नहीं दे सकता है, या गैर-नियतात्मक आउटपुट वाले फ़ंक्शन का उपयोग नहीं कर सकता है।
मान लीजिए जेनरेट किए गए कॉलम क्रॉस-टेबल संदर्भों का समर्थन करते हैं। विशेष रूप से STORED
. के मामले पर विचार करें जेनरेट किए गए कॉलम।
यदि आप कोई तालिका अपडेट करते हैं, तो MySQL को डेटाबेस में कहीं और जेनरेट किए गए कॉलम में किसी भी संदर्भ को अपडेट करना होगा, यदि वे आपके द्वारा अपडेट की गई पंक्ति का संदर्भ देते हैं। MySQL के लिए उन सभी संदर्भों को ट्रैक करना जटिल और महंगा होगा।
फिर संग्रहीत कार्यों के माध्यम से अप्रत्यक्ष संदर्भ जोड़ने पर विचार करें।
फिर विचार करें कि आपका अपडेट एक लेन-देन में एक InnoDB तालिका के लिए है, लेकिन उत्पन्न कॉलम एक गैर-लेनदेन (MyISAM, MEMORY, ARCHIVE, आदि) तालिका में हो सकता है। जब आप इसे बनाते हैं तो क्या आपका अपडेट उन जेनरेट किए गए कॉलम में दिखाई देना चाहिए? क्या होगा यदि आप वापस रोल करते हैं? क्या आपके द्वारा किए गए समय पर आपका अपडेट दिखाई देना चाहिए? फिर उन तालिकाओं पर लागू करने के लिए MySQL "कतार ऊपर" कैसे बदलना चाहिए? क्या होगा यदि एक से अधिक लेन-देन ऐसे अपडेट करते हैं जो जेनरेट किए गए कॉलम संदर्भ को प्रभावित करते हैं? किसे जीतना चाहिए, जिसने बदलाव को आखिरी बार लागू किया या जिसने आखिरी बार किया?
इन कारणों से, जेनरेट किए गए कॉलम को एक ही तालिका में एक ही पंक्ति के कॉलम के अलावा किसी अन्य चीज़ को संदर्भित करने की अनुमति देना व्यावहारिक या कुशल नहीं है।