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

एक तालिका केवल तभी बनाएं जब वह मारियाडीबी में मौजूद न हो

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

तालिका केवल तभी बनाई जाएगी जब पहले से ही समान नाम वाली कोई तालिका न हो।

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:

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

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

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

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

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

SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.tables 
    WHERE 
    TABLE_SCHEMA LIKE 'zap' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 't1'
    );

परिणाम:

1

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

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

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

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

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

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

Query OK, 0 rows affected, 1 warning (0.002 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. कैसे FLOOR () मारियाडीबी में काम करता है

  3. ProxySQL के साथ शुरुआत करना - MySQL और MariaDB लोड बैलेंसिंग ट्यूटोरियल

  4. मारियाडीबी में सभी संग्रहित प्रक्रियाओं को कैसे सूचीबद्ध करें

  5. कैसे CONV () मारियाडीबी में काम करता है