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

केवल एक तालिका कैसे बनाएं यदि यह SQLite में मौजूद नहीं है

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

इस खंड के बिना एक तालिका बनाने से सामान्य रूप से एक त्रुटि होगी यदि उसी नाम की एक तालिका पहले से ही डेटाबेस में मौजूद है। लेकिन IF NOT EXISTS . का उपयोग करते समय खंड, यदि कोई तालिका पहले से समान नाम से मौजूद है तो कथन का कोई प्रभाव नहीं पड़ता है।

उदाहरण

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

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

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

उस स्थिति में, तालिका केवल तभी बनाई जाएगी जब t1 नामक कोई तालिका या दृश्य पहले से मौजूद न हो ।

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

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

SELECT EXISTS (
    SELECT 
        name
    FROM 
        sqlite_schema 
    WHERE 
        type='table' AND 
        name='t1'
    );

परिणाम:

1

इस मामले में मुझे 1 . मिलता है , जिसका अर्थ है कि तालिका मौजूद है।

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

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

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

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

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

हमें कुछ नहीं मिलता।

बिना IF NOT EXISTS खंड

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

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

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

Error: table t1 already exists

ध्यान दें कि IF NOT 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. मुझे डेटाबेस हेल्पर को कब बंद करना चाहिए?

  2. कैसे sqlite में संग्रहीत कुछ व्यक्तिगत मूल्य के आधार पर MPandroidCharts में बार रंग बदलने के लिए?

  3. SQLiteDatabase त्रुटि, अनुपयोगी लॉग

  4. Android कक्ष + विंडो कार्य

  5. RecyclerView में डेटा प्रदर्शित करना