PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създайте база данни, като използвате съхранена функция

Този въпрос е стар, но за пълнота...

Както беше посочено в други отговори, това не е просто възможно, защото (по документация) :

Също така беше съобщено, че ограничението може да бъде заобиколено с dblink .
>Как да да използвате (инсталирате) dblink в PostgreSQL?

Това, което липсваше досега, е правилна функция, която всъщност да го прави:

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;

Проверява дали db вече съществува в локалния клъстер. Ако не, продължете да го създавате - със саниран идентификатор. Не бихме искали да поканим 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. Грешка при отпадане на Rails + Postgres:базата данни е достъпна от други потребители

  2. Определяне дали транзакцията е активна (Postgres)

  3. импортирайте CSV файл в postgres чрез php в уеб страница

  4. Разместване на PostgreSQL с празен масив

  5. Как да настроите изходния формат на интервала в PostgreSQL