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.