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

यदि मौजूद नहीं है तो अनुक्रम कैसे बनाएं

9.5 या बाद के संस्करण पोस्ट करें

IF NOT EXISTS CREATE SEQUENCE में जोड़ा गया था पोस्टग्रेज 9.5 में। अब यही सरल उपाय है:

CREATE SEQUENCE IF NOT EXISTS myschema.myseq;

लेकिन वैसे भी पुराने उत्तर के विवरण पर विचार करें ...
और आप serial . के बारे में जानते हैं या IDENTITY कॉलम, है ना?

  • ऑटो इंक्रीमेंट टेबल कॉलम

9.4 या पुराने को पोस्ट करें

अनुक्रम नामस्थान को कई अन्य तालिका जैसी वस्तुओं के साथ साझा करते हैं। मैनुअल:

<ब्लॉकक्वॉट>

अनुक्रम का नाम किसी अन्य अनुक्रम, तालिका, अनुक्रमणिका, दृश्य या विदेशी तालिका के नाम से भिन्न होना चाहिए उसी स्कीमा में।

बोल्ड जोर मेरा। तो तीन मामले हैं:

  1. नाम मौजूद नहीं है। -> अनुक्रम बनाएं।
  2. समान नाम वाला अनुक्रम मौजूद है। -> कुछ न करें? कोई आउटपुट? कोई लॉगिंग?
  3. इसी नाम की अन्य परस्पर विरोधी वस्तु मौजूद है। -> कुछ करें? कोई आउटपुट? कोई लॉगिंग?

निर्दिष्ट करें कि किसी भी मामले में क्या करना है। ए DO बयान इस तरह दिख सकता है:

DO
$do$
DECLARE
   _kind "char";
BEGIN
   SELECT relkind
   FROM   pg_class
   WHERE  oid = 'myschema.myseq'::regclass  -- sequence name, optionally schema-qualified
   INTO  _kind;

   IF NOT FOUND THEN       -- name is free
      CREATE SEQUENCE myschema.myseq;
   ELSIF _kind = 'S' THEN  -- sequence exists
      -- do nothing?
   ELSE                    -- object name exists for different kind
      -- do something!
   END IF;
END
$do$;

वस्तु के प्रकार (relkind ) pg_class . में मैनुअल के अनुसार:

<ब्लॉकक्वॉट>

r =साधारण तालिका
i =अनुक्रमणिका
S =अनुक्रम
v =दृश्य
m =भौतिक दृश्य
c =समग्र प्रकार
t =टोस्ट तालिका
f =विदेशी तालिका

संबंधित:

  • किसी दिए गए स्कीमा में तालिका मौजूद है या नहीं, इसकी जांच कैसे करें


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शीर्ष PostgreSQL सुरक्षा खतरे

  2. Postgres '\connect कमांड का JDBC प्रतिरूप क्या है?

  3. SQL के साथ Postgres db 8.1 में सभी अनुक्रमों को सूचीबद्ध करें

  4. हाइबरनेट:इंडेक्स बनाएं

  5. psql:FATAL:भूमिका पोस्टग्रेज मौजूद नहीं है