Deze vraag is oud, maar voor de volledigheid ...
Zoals in andere antwoorden is aangegeven, is dat niet eenvoudigweg mogelijk omdat (per documentatie) :
Er is ook gemeld dat de beperking kan worden omzeild met dblink
.
Hoe gebruik (installeer) dblink in PostgreSQL?
Wat tot nu toe ontbrak, is een goede functie die het daadwerkelijk doet:
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;
Controleert of de db al bestaat in het lokale cluster. Als dat niet het geval is, gaat u verder met het maken ervan - met een opgeschoonde identifier. We zouden geen SQL-injectie willen uitnodigen.