PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz bazę danych za pomocą zapisanej funkcji

To pytanie jest stare, ale ze względu na kompletność ...

Jak wskazano w innych odpowiedziach, nie jest to po prostu możliwe, ponieważ (zgodnie z dokumentacją) :

Doniesiono również, że ograniczenie można ominąć za pomocą dblink .
Jak użyć (zainstalować) dblink w PostgreSQL?

Do tej pory brakowało odpowiedniej funkcji, która faktycznie to robi:

CREATE OR REPLACE FUNCTION f_create_db(dbname text)
  RETURNS integer AS
$func$
BEGIN

IF EXISTS (SELECT 1 FROM pg_database WHERE datname = dbname) THEN
   RAISE NOTICE 'Database already exists'; 
ELSE
   PERFORM dblink_exec('dbname=' || current_database()   -- current db
                     , 'CREATE DATABASE ' || quote_ident(dbname));
END IF;

END
$func$ LANGUAGE plpgsql;

Sprawdza, czy baza danych już istnieje w lokalnym klastrze. Jeśli nie, przystąp do jego tworzenia - z oczyszczonym identyfikatorem. Nie chcielibyśmy zapraszać do wstrzykiwania SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można zainstalować PG gem na Mac OSX

  2. Jak zaimportować *ogromne* porcje danych do PostgreSQL?

  3. Różnica między dwiema datami w postgresql

  4. Po aktualizacji do macOS Big Sur nie mogę połączyć się z bazą danych PostgreSQL za pomocą MAMP

  5. Opcje wielodostępności dla PostgreSQL