PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Buat database menggunakan fungsi tersimpan

Pertanyaan ini sudah lama, tetapi demi kelengkapan ...

Seperti yang telah ditunjukkan dalam jawaban lain, itu tidak mungkin karena (per dokumentasi) :

Juga telah dilaporkan bahwa pembatasan dapat dilewati dengan dblink .
Cara gunakan (instal) dblink di PostgreSQL?

Apa yang hilang sejauh ini adalah fungsi yang tepat yang benar-benar melakukannya:

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;

Memeriksa apakah db sudah ada di cluster lokal. Jika tidak, lanjutkan untuk membuatnya - dengan pengenal yang disanitasi. Kami tidak ingin mengundang injeksi 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. Apakah ADO bekerja dengan driver ODBC atau hanya penyedia OLE DB?

  2. Pengaturan &Pemeliharaan Replikasi PostgreSQL Menggunakan Ansible

  3. Menghubungkan PostgreSQL dengan R

  4. Tantangan kueri rekursif - contoh orang tua/anak sederhana

  5. Apakah PL/pgSQL dan SQL di PostgreSQL keduanya pada tingkat yang sama dengan standar SQL/PSM, bukan sebagai standar SQL saja?