कैसे SQL सर्वर में अगर दरार का उपयोग करने के लिए?



समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें

यह लेख चर्चा करता है 'अगर चोट लगी है तो' SQL सर्वर 2016 और बाद के संस्करणों में उपलब्ध कथन। 'अगर सही है' SQL Server 2016 और बाद के संस्करणों में मौजूदा DROP कथन में नवीनतम वैकल्पिक क्लॉज जोड़ा गया है। अनिवार्य रूप से, 'अगर चोट लगी है तो' विकल्प का उपयोग तब किया जाता है जब यह जांचना आवश्यक हो जाता है कि किसी डेटाबेस के बनने या गिराए जाने से पहले कोई इकाई बनी हुई है या नहीं। इस मामले में, हम पहले मौजूदा डेटाबेस ऑब्जेक्ट को छोड़ देंगे और फिर यदि आवश्यक हो तो परिवर्तनों के साथ इसे फिर से बनाएँ।



इस प्रकार, यह लिखने के पुराने तरीके को रोकता है अगर हालत और अगर स्थिति लिखने के अंदर वस्तु की उपस्थिति को छोड़ने के लिए परीक्षण करने के लिए एक बयान लिख रहा है। यदि ऐसा नहीं होता है, तो बैच में अगला विवरण निष्पादित किया जाएगा। लेकिन अगर हम एक ऐसी वस्तु को छोड़ने की कोशिश करते हैं जो मौजूद नहीं है तो यह नीचे दिखाए गए अनुसार एक त्रुटि संदेश देगा।



निम्न क्वेरी निष्पादित करें।



ड्रॉप टेबल dbo.company

आउटपुट इस तरह होगा।

डेटाबेस ऑब्जेक्ट को ड्रॉ करते समय त्रुटि उत्पन्न होती है जो मौजूद नहीं है

वाक्य - विन्यास

'DROP object_type [IF EXISTS] object_name'

बहस

वस्तु प्रकार:



ऑब्जेक्ट प्रकार डेटाबेस, ट्रिगर, असेंबली, सीक्वेंस, इंडेक्स, टेबल, प्रोसेस व्यू, फंक्शन, आदि में से कोई भी हो सकता है।

यदि अपवाद हैं:

यह एक वैकल्पिक खंड है और अगर यह ड्रॉप बयान में बताया गया है, यह वस्तु के अस्तित्व की जाँच करेगा, यदि वह मौजूद है इसे छोड़ देगा, अन्यथा यह किसी भी त्रुटि के उत्पादन के बिना ब्लॉक में अगले बयान निष्पादित करने के लिए जारी रहेगा।

अब SQL सर्वर 2016 डेवलपर्स में 'DROP IF EXISTS' नई विधि की शुरुआत के साथ संक्षिप्त कोड लिख सकते हैं।

सबसे पहले, 'appuals' नामक एक डेटाबेस बनाएं।

एक डेटाबेस बनाना

अब, हम निम्नलिखित कोड को निष्पादित करके एक तालिका बनाएंगे।

उपयोग [appuals] जाओ टेबल अस्थायी (आईडी INT, नाम varchar (100)); जाओ

आउटपुट निम्नानुसार होगा।

टेबल निर्माण

इसके अलावा, निम्न कोड का उपयोग करके स्टोर की जाने वाली प्रक्रिया बनाएं।

उपयोग करें [appuals] जाओ सेट पर जाने के लिए ANSI_NULLS जाओ, जाओ PROOTEDURE [dbo] जाओ पर जाओ [sp_temp] AS BEGIN SET NOCOUNT ON; Dbo.temp से * चयन करें; समाप्त

आउटपुट नीचे होगा।

स्टोर प्रक्रिया निर्माण

पुरानी विधि: डेटाबेस ऑब्जेक्ट्स से बाहर निकलने पर SQL सर्वर से पहले ड्रॉप का उपयोग करें

SQL Server 2016 से पहले DROP IF EXISTS मेथड का उपयोग करने के लिए लंबा स्टेटमेंट लिखना आवश्यक है।

ड्रॉप टेबल अगर मौजूद है

तालिका छोड़ने की पूर्व विधि इस प्रकार है।

यदि हम SQL सर्वर 2015 या उससे पहले का उपयोग कर रहे हैं तो हमें कोड के निम्नलिखित गुच्छा को निष्पादित करने की आवश्यकता है।

यदि (OBJECT_ID ('dbo.temp') शून्य नहीं है) ड्रॉप टेबल अस्थायी

आउटपुट निम्नानुसार होगा।

मेज गिरा देना

अब इसका सिंटैक्स काफी भ्रामक है इसलिए यदि आप इसे पसंद नहीं करते हैं और आप SQL Server 2016 या उससे ऊपर का उपयोग कर रहे हैं तो आप बड़े आवरणों के बजाय साधारण DROP IF EXIST स्टेटमेंट के लिए जा सकते हैं।

मौजूद होने पर ड्रॉप स्टोर प्रक्रिया:

प्रक्रिया को छोड़ने के लिए, हमें यह जांचने के लिए एक सशर्त विवरण लिखना होगा कि क्या स्टोर प्रक्रिया मौजूद है या नहीं, फिर ड्रॉप स्टेटमेंट लिखें। अन्यथा, यदि संग्रहीत प्रक्रिया मौजूद नहीं है, तो यह एक त्रुटि उत्पन्न करेगा।

SQL सर्वर 2016 से कम संस्करणों में प्रक्रिया को छोड़ने के लिए अब निम्नलिखित कथनों को निष्पादित करें।

यदि EXISTS (चयन 1 से sys.procedures जहां नाम = 'sp_temp') DROP प्रक्रिया dbo.sp_temp

आउटपुट इस तरह होगा।

यदि रैपर कोड की पुरानी विधि का उपयोग करके ड्रॉप प्रक्रिया

डेटाबेस मौजूद होने पर छोड़ें:

यदि आप SQL सर्वर के पिछले संस्करणों का उपयोग कर रहे हैं, तो आपको डेटाबेस को छोड़ने के लिए निम्न कोड निष्पादित करना होगा।

IF DB_ID ('appuals') पूर्ण BEGIN DROP DATABASE उपादान अंत नहीं है

आउटपुट निम्नानुसार होगा।

एक पुरानी विधि का उपयोग करके डेटाबेस को छोड़ें

नई विधि: SQL Server 2016 और इसके बाद के संस्करण में समर्थित अगर EXISTS

SQL सर्वर 2016 में डेटाबेस ऑब्जेक्ट को छोड़ने के लिए और ऊपर हमें एक सरल स्टेटमेंट निष्पादित करना होगा।

यदि मौजूद है तो ड्रॉप टेबल:

SQL सर्वर 2016 में नीचे मौजूद स्टेटमेंट को निकालने के लिए हम एक स्टेटमेंट लिख सकते हैं।

DROP TABLE IF IF EXISTS dbo.temp

आउटपुट इस तरह होगा।

नई विधि का उपयोग करके ड्रॉप टेबल

यदि मौजूद है तो ड्रॉप प्रक्रिया:

अब हम निम्नलिखित कोड को निष्पादित करके लेख की शुरुआत में बनाई गई संग्रहीत प्रक्रिया को छोड़ देंगे।

DROP प्रक्रिया यदि EXISTS dbo.sp_temp है

आउटपुट नीचे होगा।

नई विधि का उपयोग करके ड्रॉप टेबल

जहाँ तक वाक्य रचना का सवाल है, यह सरल कथन समझने में आसान है और याद रखने में आसान है। इसी तरह, हम अन्य डेटाबेस ऑब्जेक्ट्स को छोड़ने के लिए समान प्रक्रिया का पालन कर सकते हैं।

डेटाबेस मौजूद होने पर छोड़ें:

यदि आप मौजूद चेक का उपयोग करके डेटाबेस को छोड़ना चाहते हैं, तो निम्न कोड निष्पादित करें

USE MASTER GO DROP DATABASE यदि कोई एक्‍सप्‍लेंट है

आउटपुट नीचे होगा।

नई विधि का उपयोग करके डेटाबेस ड्रॉप करें

इस पद्धति का उपयोग करने का लाभ यह है कि यदि डेटाबेस मौजूद नहीं है, तो यह किसी भी त्रुटि का कारण नहीं होगा, बैच में अगले कथन को निष्पादित किया जाएगा। आइए पहले से ही गिराए गए डेटाबेस को फिर से गिराने की कोशिश करें।

पहले से ही गिरा डेटाबेस को फिर से ड्रॉप करते समय त्रुटि उत्पन्न होती है।

इसी तरह, हम डेटाबेस से अनुक्रमित, विचार, अनुक्रम, असेंबली आदि को छोड़ सकते हैं।

3 मिनट पढ़ा