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

यह जांचने के 4 तरीके हैं कि SQL सर्वर (T-SQL) में छोड़ने से पहले कोई तालिका मौजूद है या नहीं

एसक्यूएल में एक टेबल छोड़ना आसान है। आप बस DROP TABLE myTable . का उपयोग करें जहां myTable उस तालिका का नाम है जिसे आप छोड़ना चाहते हैं। आप टी-एसक्यूएल स्क्रिप्ट के माध्यम से एसक्यूएल सर्वर में एक टेबल ड्रॉप करने के लिए इस विधि का उपयोग कर सकते हैं।

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

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

विकल्प 1:IF EXISTS खंड

SQL सर्वर 2016 या बाद के संस्करण का उपयोग करते समय, हम IF EXISTS . का उपयोग कर सकते हैं DROP TABLE . का खंड तालिका को छोड़ने का प्रयास करने से पहले उसके अस्तित्व की जाँच करने के लिए कथन:

DROP TABLE IF EXISTS t1;

यह t1 . नामक तालिका को छोड़ देता है अगर यह मौजूद है।

तालिका मौजूद होने पर उपरोक्त कथन को चलाने का परिणाम यहां दिया गया है (और इसलिए छोड़ दिया गया है):

Commands completed successfully.

और अगर हम तुरंत स्टेटमेंट को फिर से चलाते हैं (यानी जब टेबल मौजूद नहीं है) तो हमें यही मिलता है:

Commands completed successfully.

वही आउटपुट। तो कथन सफलतापूर्वक चलता है कि तालिका मौजूद है या नहीं।

यदि हम IF EXISTS . का उपयोग किए बिना तालिका को छोड़ने का प्रयास करते हैं तो यहां क्या होता है? खंड:

DROP TABLE t1;

परिणाम:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.

विकल्प 2:ऑब्जेक्ट आईडी जांचें

हम वैकल्पिक रूप से OBJECT_ID() . का उपयोग कर सकते हैं तालिका को छोड़ने का प्रयास करने से पहले उसके अस्तित्व की जाँच करने के लिए कार्य करें:

IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

उपरोक्त उदाहरण dbo.t1 . के लिए ऑब्जेक्ट आईडी की जांच करता है टेबल। दूसरा तर्क OBJECT_ID() उस वस्तु के प्रकार को निर्दिष्ट करता है जिसकी हम तलाश कर रहे हैं। इस मामले में हम U . का उपयोग करते हैं , जो "उपयोगकर्ता परिभाषित तालिका" के लिए है।

OBJECT_ID() स्कीमा-स्कोप्ड ऑब्जेक्ट की डेटाबेस ऑब्जेक्ट पहचान संख्या देता है। यदि ऑब्जेक्ट मौजूद है, तो यह NULL नहीं लौटाएगा, और इसलिए, हम तालिका को छोड़ सकते हैं। अगर वस्तु नहीं मौजूद है, या यदि आपके पास इसकी पहुंच नहीं है, तो फ़ंक्शन NULL और DROP TABLE लौटाता है बयान नहीं चलेगा।

Option 3:query information_schema.tables

यह जांचने का एक और तरीका है कि कोई तालिका पहले से मौजूद है या नहीं, information_schema.tables . को क्वेरी करना है देखें:

IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

यह पिछले उदाहरण के समान काम करता है; यह तालिका के अस्तित्व की जाँच करता है और इसे केवल तभी बनाता है जब यह मौजूद न हो।

विकल्प 4:क्वेरी sys.tables

हम sys.tables . को भी क्वेरी कर सकते हैं सिस्टम कैटलॉग व्यू:

IF EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    DROP TABLE dbo.t1;

SQL सर्वर तालिकाओं के अस्तित्व की जाँच करने के लिए कई अन्य तरीके प्रदान करता है। उदाहरण के लिए SQL सर्वर में तालिका मौजूद है या नहीं, यह जांचने के 6 तरीके देखें।


  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 सर्वर + SQL सर्वर प्रमाणीकरण + त्रुटि:18456 में लॉगिन करने में असमर्थ

  2. मैं एक SQL चयन में IF...फिर कैसे निष्पादित करूं?

  3. T-SQL का उपयोग करके SQL सर्वर में एक कंप्यूटेड कॉलम बनाएं

  4. SQL सर्वर में IN लॉजिकल ऑपरेटर क्या है - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 122

  5. SQL सर्वर में उपयोगकर्ता परिभाषित प्रकार बदलें