इसका संक्षिप्त उत्तर नहीं है। जब आप fromअपडेट स्टेटमेंट के क्लॉज में कई टेबल डाल सकते हैं, तो आप updateकीवर्ड के बाद केवल एक ही टेबल निर्दिष्ट कर सकते हैं । यहां तक कि अगर आप एक "अद्यतन योग्य" दृश्य लिखते हैं (जो केवल एक दृश्य है जो कुछ प्रतिबंधों का पालन करता है), इस तरह के अपडेट विफल हो जाएंगे। यहाँ MSDN प्रलेखन से संबंधित क्लिप हैं (जोर मेरा है)।
अद्यतन (लेनदेन एसक्यूएल)
Table_or_view_name द्वारा संदर्भित दृश्य अद्यतन योग्य होना चाहिए और दृश्य के FROM खंड में ठीक एक आधार तालिका का संदर्भ होना चाहिए । Updatable विचारों के बारे में अधिक जानकारी के लिए, देखें दृश्य (लेनदेन-एसक्यूएल)।
क्रिएट व्यू (लेनदेन-एसक्यूएल)
आप एक अंतर्निहित बेस टेबल के डेटा को एक दृश्य के माध्यम से संशोधित कर सकते हैं, जब तक कि निम्नलिखित स्थितियां सत्य नहीं होती हैं:
- UPDATE, INSERT और DELETE कथनों सहित किसी भी संशोधन में केवल एक आधार तालिका से संदर्भ कॉलम होना चाहिए ।
- दृश्य में संशोधित किए जा रहे कॉलम को सीधे टेबल कॉलम में अंतर्निहित डेटा को संदर्भित करना चाहिए। स्तंभों को किसी अन्य तरीके से प्राप्त नहीं किया जा सकता है, जैसे कि निम्नलिखित के माध्यम से:
- एक समग्र कार्य: AVG, COUNT, SUM, MIN, MAX, ग्रुपिंग, STDEV, STDEVP, VAR और VARP।
- एक संगणना। स्तंभ को अन्य स्तंभों का उपयोग करने वाले अभिव्यक्ति से गणना नहीं की जा सकती है। स्तंभ जो संचालक सेटेशन UNION, UNION ALL, CROSSJOIN, EXCEPT, और INTERSECT राशि का उपयोग करके एक संगणना के लिए बनाए जाते हैं और अद्यतन योग्य नहीं होते हैं।
- संशोधित किए जा रहे कॉलम GROUP BY, HAVING, या DISTINCT क्लॉस से प्रभावित नहीं होते हैं।
- TOP का उपयोग CHECK OPTION क्लॉज़ के साथ दृश्य के select_statement में कहीं भी नहीं किया गया है।
हालाँकि, सभी ईमानदारी में, आपको लेन्यूशिन के उदाहरण के अनुसार लेनदेन के भीतर दो अलग-अलग एसक्यूएल बयानों का उपयोग करने पर विचार करना चाहिए।
अद्यतन: मेरा मूल दावा है कि आप एक अद्यतन योग्य दृश्य में कई तालिकाओं को अद्यतन कर सकते हैं गलत था। SQL सर्वर 2005 और 2012 पर, यह निम्न त्रुटि उत्पन्न करेगा। मैंने इसे दर्शाने के लिए अपना उत्तर सही कर दिया है।
Msg 4405, Level 16, State 1, Line 1
View or function 'updatable_view' is not updatable because the modification affects multiple base tables.