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

कैसे जांचें कि कोई तालिका MySQL में बनाने से पहले पहले से मौजूद है या नहीं?

MySQL में, आप IF NOT EXISTS . का उपयोग कर सकते हैं CREATE TABLE का खंड यह जाँचने के लिए कथन कि डेटाबेस में एक ही नाम की तालिका पहले से मौजूद है या नहीं।

यदि तालिका मौजूद नहीं है, तो इसे बनाया जाएगा। अगर यह पहले से मौजूद है, तो इसे नहीं बनाया जाएगा।

उदाहरण

यह इस प्रकार है:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

जहां t1 तालिका का नाम है, और कोष्ठकों के बीच सब कुछ तालिका परिभाषा (अर्थात स्तंभ, आदि) है।

उस स्थिति में, तालिका केवल तभी बनाई जाएगी जब t1 . नामक पहले से कोई तालिका न हो ।

जांचें कि तालिका अभी मौजूद है या नहीं

हम sys.table_exists() . का उपयोग कर सकते हैं तालिका अब मौजूद है या नहीं यह देखने के लिए प्रक्रिया:

CALL sys.table_exists('test', 't1', @table_type); 
SELECT @table_type;

परिणाम:

+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

यहां, test डेटाबेस का नाम है, और t1 उस तालिका का नाम है जिसके अस्तित्व की मैं जाँच कर रहा हूँ।

इस मामले में, परिणाम BASE TABLE . है जिसका अर्थ है कि तालिका मौजूद है।

यह जांचने के कई तरीकों में से एक है कि क्या MySQL में कोई तालिका मौजूद है।

तालिका फिर से बनाने का प्रयास करें

अब यदि हम उस तालिका को फिर से बनाने का प्रयास करते हैं:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

हमें कोई त्रुटि नहीं मिलती:

Query OK, 0 rows affected, 1 warning (0.00 sec)

लेकिन हमें चेतावनी मिलती है।

तो चलिए चेतावनी देखते हैं:

SHOW WARNINGS;

परिणाम:

+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

जैसा कि अपेक्षित था, यह हमें बताता है कि तालिका पहले से मौजूद है।

बिना IF NOT EXISTS खंड

यहां बताया गया है कि जब हम IF NOT EXISTS . का उपयोग नहीं करते हैं तो क्या होता है एक तालिका बनाने का प्रयास करते समय खंड जो पहले से मौजूद है:

CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

इस बार हमें एक त्रुटि मिली:

ERROR 1050 (42S01): Table 't1' already exists

यह नोट करना महत्वपूर्ण है कि IF NOT EXISTS खंड तालिका संरचना/परिभाषा की जांच नहीं करता है। यह केवल जाँचता है कि हमारे द्वारा बनाई जा रही तालिका को उसी नाम से कोई मौजूदा तालिका नहीं है जिसे हम देने का प्रयास कर रहे हैं।

दूसरे शब्दों में, सिर्फ इसलिए कि उस नाम की एक तालिका पहले से मौजूद है, इसका मतलब यह नहीं है कि इसकी सही परिभाषा है।


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

  2. स्तंभों की गतिशील संख्या में MySQL धुरी पंक्ति

  3. MySQL में इन्वेंटरी मैनेजमेंट सिस्टम के लिए डेटाबेस डिजाइन करने के लिए गाइड

  4. Ansible . का उपयोग करके स्टैंडअलोन MySQL से गैलेरा क्लस्टर में माइग्रेशन को स्वचालित कैसे करें

  5. कैसे पता चलेगा कि MySQLnd सक्रिय ड्राइवर है?