Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में एक स्कीमा बाउंड व्यू बनाएं

SQL सर्वर में स्कीमा को अपने विचारों को बाँधना आमतौर पर एक अच्छा विचार है।

आपके विचार को बाध्य करने वाली स्कीमा यह सुनिश्चित करेगी कि अंतर्निहित तालिकाओं को इस तरह से नहीं बदला जा सकता है जिससे दृश्य प्रभावित हो। स्कीमा बाइंडिंग के बिना, अंतर्निहित तालिकाओं या अन्य वस्तुओं को संशोधित या हटाया भी जा सकता है। अगर ऐसा होता है, तो व्यू उम्मीद के मुताबिक काम नहीं करेगा।

स्कीमा बाउंड व्यू बनाने के लिए, WITH SCHEMABINDING का उपयोग करें दृश्य बनाने के लिए अपने टी-एसक्यूएल कोड में।

उदाहरण

स्कीमा बाउंड व्यू बनाने का एक उदाहरण यहां दिया गया है:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO
चुनें

ध्यान दें कि मैंने अपनी क्वेरी में तालिका को संदर्भित करते समय दो-भाग के नाम का उपयोग किया था - मैंने dbo.Cats का उपयोग किया था केवल Cats . के बजाय . ऐसा करना किसी ऑब्जेक्ट को बाध्य करने वाले स्कीमा के लिए एक आवश्यकता है। यदि आप दो-भाग नामों का उपयोग किए बिना किसी ऑब्जेक्ट को स्कीमा बाइंड करने का प्रयास करते हैं तो आपको एक त्रुटि मिलेगी।

अब जब मैंने स्कीमा को अपने विचार के लिए बाध्य कर दिया है, यदि मैं इसकी परिभाषा में संदर्भित तालिका को छोड़ने का प्रयास करता हूं, तो मुझे एक त्रुटि मिलती है:

DROP TABLE Cats;

परिणाम:

Msg 3729, Level 16, State 1, Line 1
Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.

यदि मैं दो-भागों के नामकरण का उपयोग किए बिना दृश्य को स्कीमा बाइंड करने का प्रयास करता हूं तो यहां क्या होता है:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM Cats;
GO

परिणाम:

Msg 4512, Level 16, State 3, Procedure v_Cats, Line 5
Cannot schema bind view 'dbo.v_Cats' because name 'Cats' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.

अन्य दृश्य विशेषताएं

एकाधिक विशेषताओं को अल्पविराम द्वारा अलग किया जा सकता है। आपको WITH निर्दिष्ट करने की आवश्यकता नहीं है प्रत्येक विशेषता के लिए।

उदाहरण के लिए, यदि आप चाहते हैं कि दृश्य स्कीमा बाध्य हो और एन्क्रिप्टेड, आप यह कर सकते हैं:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING, ENCRYPTION
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STRING_AGG में DISTINCT मान उत्पन्न करें

  2. SQL 2005 में UTC और स्थानीय (यानी PST) समय के बीच प्रभावी रूप से दिनांक परिवर्तित करना

  3. एसक्यूएल सर्वर 2016

  4. क्या स्तंभ क्रमसूचक स्थिति का उपयोग करके sql सर्वर डेटा का चयन करना संभव है?

  5. संयोजन संघर्ष को हल नहीं कर सकता