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

SQL सर्वर में ऑब्जेक्ट DIE बनाएं

SQL सर्वर में, यदि आप किसी ऐसी वस्तु को छोड़ने का प्रयास करते हैं जो मौजूद नहीं है, तो आपको एक त्रुटि मिलेगी। यदि आप कोई त्रुटि प्राप्त नहीं करना चाहते हैं, तो आपको वस्तु के अस्तित्व की जांच करने के लिए कुछ अतिरिक्त कोड जोड़ने की आवश्यकता होगी।

SQL सर्वर 2016 से पहले, आपको एक IF जोड़ना होगा वह कथन जो यह पता लगाने के लिए प्रासंगिक सिस्टम ऑब्जेक्ट को क्वेरी करता है कि ऑब्जेक्ट मौजूद है या नहीं।

SQL सर्वर 2016 से, अब आप यह जांचने के लिए एक नई, क्लीनर विधि का उपयोग कर सकते हैं कि कोई ऑब्जेक्ट मौजूद है या नहीं। हम इसे DROP IF EXISTS . कहेंगे (अन्यथा "डाई" के रूप में जाना जाता है)।

उदाहरण 1 - मूल सिंटैक्स

सिंटैक्स में वास्तव में DROP IF EXISTS . नहीं होता है स्ट्रिंग जैसा है। आपको क्या करना है DROP . के बीच ऑब्जेक्ट टाइप डालना है और IF

DROP TABLE IF EXISTS Customers

इस मामले में, मैं एक टेबल छोड़ रहा हूं, इसलिए शब्द TABLE DROP . के बीच डाला जाता है और IF . तालिका का नाम जिसे मैं छोड़ना चाहता हूं (इस मामले में ग्राहक ) को अंत में रखा गया है।

उदाहरण 2 - बेसिक डेमो

यहां एक डेटाबेस बनाने, फिर उसे छोड़ने, फिर उसे छोड़ने का प्रयास करने का एक उदाहरण दिया गया है।

CREATE DATABASE Homer;
GO
DROP DATABASE IF EXISTS Homer;
GO
DROP DATABASE IF EXISTS Homer;
GO

परिणाम:

Started executing query at Line 17
Commands completed successfully.

Started executing query at Line 19
Commands completed successfully.

Started executing query at Line 21
Commands completed successfully.

कोई त्रुटि नहीं होती है, भले ही मैं एक गैर-मौजूद वस्तु को तीसरी पंक्ति पर छोड़ने का प्रयास करता हूं।

उदाहरण 3 - अगर मौजूद नहीं है

यहाँ यह फिर से है, इस समय को छोड़कर मैं IF EXISTS . को हटा देता हूँ भाग।

CREATE DATABASE Homer;
GO
DROP DATABASE Homer;
GO
DROP DATABASE Homer;
GO

परिणाम:

Started executing query at Line 17
Commands completed successfully.

Started executing query at Line 19
Commands completed successfully.

Started executing query at Line 21
Msg 3701, Level 11, State 1, Line 5
Cannot drop the database 'Homer', because it does not exist or you do not have permission.

इस मामले में मुझे एक त्रुटि मिलती है, क्योंकि यह एक ऐसी वस्तु को छोड़ने की कोशिश कर रहा है जो मौजूद नहीं है।

उदाहरण 4 - कॉलम और बाधाएं

आप कॉलम और बाधाओं पर भी DIE का उपयोग कर सकते हैं।

उदाहरण के लिए, आप DROP COLUMN IF EXISTS . का उपयोग कर सकते हैं आपके ALTER TABLE . के भीतर बयान।

यहां एक उदाहरण दिया गया है।

DROP TABLE IF EXISTS DieTest;
GO

CREATE TABLE DieTest
(
    DieTestId uniqueidentifier NOT NULL DEFAULT NEWID(),
    DieTestName varchar(70), 
    InsertDate datetime2(7) NOT NULL DEFAULT GETDATE()
);
GO

ALTER TABLE DieTest
DROP COLUMN IF EXISTS DieTestName;
GO

ALTER TABLE DieTest
DROP COLUMN IF EXISTS DieTestName;
GO

परिणाम:

Started executing query at Line 1
Commands completed successfully.

Started executing query at Line 3
Commands completed successfully.

Started executing query at Line 11
Commands completed successfully.

Started executing query at Line 15
Commands completed successfully.

उदाहरण 5 - SQL सर्वर 2016 से पहले

SQL सर्वर 2016 से पहले, किसी ऑब्जेक्ट के अस्तित्व का परीक्षण करने के लिए, आपको कुछ ऐसा करने की आवश्यकता होगी:

IF DB_ID('Homer') IS NOT NULL
DROP DATABASE Homer;

वह उदाहरण DB_ID() . का उपयोग करता है क्योंकि हम एक डेटाबेस के साथ काम कर रहे हैं। यदि वस्तु भिन्न प्रकार की थी, तो आपको OBJECT_ID() . का उपयोग करने की आवश्यकता हो सकती है समारोह या कुछ और पूरी तरह से।

उदाहरण के लिए:

IF OBJECT_ID('dbo.Customers, 'U') IS NOT NULL
DROP TABLE dbo.Customers;
 
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'MyTrigger')
DROP TRIGGER MyTrigger

एक बार जब हम इस कोड को देखना शुरू करते हैं, तो हम देख सकते हैं कि DROP IF EXISTS . क्यों है? T-SQL सिंटैक्स में एक स्वागत योग्य अतिरिक्त है।

योग्य वस्तुएं

DIE का उपयोग निम्नलिखित वस्तुओं पर किया जा सकता है।

<टीडी>

प्रक्रिया

<टीडी>

टेबल

<टीडी>

भूमिका

<टीडी>

ट्रिगर

<टीडी>

नियम

<टीडी>

प्रकार

<टीडी>

स्कीमा

<टीडी>

उपयोगकर्ता

<टीडी>

सुरक्षा नीति

<टीडी>

देखें

<टीडी>

अनुक्रम

<टीडी>

पर्यायवाची

सकल

विधानसभा

देखें

डेटाबेस

डिफ़ॉल्ट

समारोह

सूचकांक

जैसा कि उल्लेख किया गया है, ALTER TABLE . का उपयोग करते समय DIE का उपयोग कॉलम और बाधाओं पर भी किया जा सकता है कथन:

  • यदि मौजूद है तो टेबल ड्रॉप कॉलम में बदलाव करें
  • यदि मौजूद है तो टेबल ड्रॉप की कमी को बदलें

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # का उपयोग कर SQL सर्वर सम्मिलित कमांड से वापसी मूल्य

  2. SQL सर्वर का उपयोग करके सॉफ़्टवेयर संस्करणों की तुलना कैसे करें?

  3. प्रोग्रामेटिक रूप से पहचान कॉलम मान कैसे बदलें?

  4. SQL सर्वर - पंक्तियों को अल्पविराम से अलग की गई सूची में शामिल करें

  5. संग्रहीत कार्यविधि से चयन कैसे करें