Denna fråga är gammal, men för fullständighetens skull ...
Som har påpekats i andra svar är det inte helt enkelt möjligt eftersom (per dokumentation) :
Det har också rapporterats att begränsningen kan kringgås med dblink
.
Hur man använda (installera) dblink i PostgreSQL?
Vad som saknades hittills är en riktig funktion som faktiskt gör det:
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;
Kontrollerar om db redan finns i det lokala klustret. Om inte, fortsätt att skapa den - med en sanerad identifierare. Vi skulle inte vilja bjuda in SQL-injektion.