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

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

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

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

उदाहरण

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

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

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

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

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

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

SELECT EXISTS (
    SELECT FROM 
        pg_tables
    WHERE 
        schemaname = 'public' AND 
        tablename  = 't1'
    );

परिणाम:

True

इस मामले में मुझे True मिलता है , जिसका अर्थ है कि तालिका मौजूद है और मेरी उस तक पहुंच है।

आपके कॉन्फ़िगरेशन के आधार पर, आपको t . मिल सकता है /f True . के बजाय /False

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

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

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

हमें कोई त्रुटि नहीं मिलती, हमें एक सूचना मिलती है:

NOTICE:  relation "t1" already exists, skipping

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

बिना IF NOT EXISTS खंड

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

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

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

ERROR:  relation "t1" already exists

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

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

IF NOT EXISTS PostgreSQL 9.1 (रिलीज़ नोट्स) में कार्यक्षमता जोड़ी गई थी।


  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. Postgresql में स्थानीय चर कैसे घोषित करें?

  3. डॉकर - पोस्टग्रेज कंटेनर में psql कमांड कैसे चला सकता है?

  4. PostgreSQL v13 क्लस्टरकंट्रोल के साथ परिनियोजन और स्केलिंग 1.8.2

  5. मौजूदा PostgreSQL डेटाबेस पर TimescaleDB को कैसे सक्षम करें