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
खंड निर्दिष्ट है।