एक दृश्य को बाध्य करने वाले स्कीमा का उद्देश्य यह सुनिश्चित करना है कि दृश्य में संदर्भित आधार तालिकाओं को इस तरह से संशोधित नहीं किया जा सकता है जो दृश्य परिभाषा को प्रभावित करेगा।
यह सामान्य रूप से एक अच्छी बात है। आखिरकार, आप नहीं चाहते कि कोई साथ आए और एक टेबल छोड़े, जिस पर आपका विचार निर्भर करता है, है ना?
लेकिन क्या होगा यदि आपको अपने विचार से संदर्भित एक या अधिक तालिकाओं में परिवर्तन करने की आवश्यकता है?
इस मामले में, आप स्कीमा बाइंडिंग को एक दृश्य से हटा सकते हैं, आधार तालिका में परिवर्तन कर सकते हैं, फिर स्कीमा बाइंडिंग को फिर से लागू कर सकते हैं।
स्कीमा बाइंडिंग को एक दृश्य से हटाने के दो तरीके हैं:
- दृश्य बदलें ताकि इसकी परिभाषा अब स्कीमा बाइंडिंग को निर्दिष्ट न करे।
- दृश्य को छोड़ दें (फिर यदि आवश्यक हो तो स्कीमा बाइंडिंग के बिना इसे फिर से बनाएं)।
स्कीमा-बाउंड व्यू का उदाहरण
सबसे पहले, यहां स्कीमा बाउंड व्यू का एक उदाहरण दिया गया है:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GOचुनें
हम जानते हैं कि यह एक स्कीमा बाध्य दृश्य है क्योंकि इसमें WITH SCHEMABINDING
. है इसकी परिभाषा में। स्कीमा बाइंडिंग को हटाने के लिए, हमें केवल उस बिट को हटाना होगा।
विकल्प 1 - दृश्य बदलें
इस दृश्य से स्कीमा बाइंडिंग को बदलकर इसे हटाने के लिए, हम निम्नलिखित कोड का उपयोग कर सकते हैं:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
हमने केवल CREATE
में बदलाव किया था करने के लिए ALTER
, और WITH SCHEMABINDING
remove को हटा दें ।
विकल्प 2 - दृश्य छोड़ें
यहां दृश्य को छोड़ने, फिर उसे स्कीमा बाइंडिंग के बिना फिर से बनाने का एक उदाहरण दिया गया है:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GOचुनें
इस मामले में, मैंने DROP IF EXISTS सिंटैक्स का उपयोग किया है, जो दृश्य के मौजूद न होने की स्थिति में किसी त्रुटि को होने से रोकता है।