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

PostgreSQL ROLE (उपयोगकर्ता) बनाएं यदि यह मौजूद नहीं है

जो आपके मन में था, उसी तरह से सरल बनाएं:

DO
$do$
BEGIN
   IF NOT EXISTS (
      SELECT FROM pg_catalog.pg_roles  -- SELECT list can be empty for this
      WHERE  rolname = 'my_user') THEN

      CREATE ROLE my_user LOGIN PASSWORD 'my_password';
   END IF;
END
$do$;

(@a_horse_with_no_name के उत्तर पर निर्माण और @ ग्रेगरी की टिप्पणी के साथ सुधार हुआ।)

इसके विपरीत, उदाहरण के लिए, CREATE TABLE . के साथ कोई IF NOT EXISTS . नहीं है CREATE ROLE . के लिए खंड (कम से कम पीजी 12 तक)। और आप नहीं सादे SQL में डायनेमिक DDL स्टेटमेंट निष्पादित करें।

किसी अन्य पीएल का उपयोग करने के अलावा "पीएल/पीजीएसक्यूएल से बचने" का आपका अनुरोध असंभव है। DO स्टेटमेंट डिफ़ॉल्ट प्रक्रियात्मक भाषा के रूप में plpgsql का उपयोग करता है। सिंटैक्स स्पष्ट घोषणा को छोड़ने की अनुमति देता है:

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

DO [ LANGUAGE lang_name ] code
...
lang_name
प्रक्रियात्मक भाषा का नाम जिसमें कोड लिखा गया है। यदि छोड़ दिया गया है, तो डिफ़ॉल्ट plpgsql है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres bytea कॉलम को फ़ाइल के रूप में कैसे डाउनलोड करें

  2. PostgreSQL-आधारित अनुप्रयोग प्रदर्शन:विलंबता और छिपी हुई देरी

  3. कैसे Cosd () PostgreSQL में काम करता है

  4. pg_ctl युक्तियाँ और तरकीबें

  5. Linux फ़ाइल सिस्टम और PostgreSQL चेकपॉइंट बेंचमार्क