Diese Frage ist alt, aber der Vollständigkeit halber ...
Wie in anderen Antworten darauf hingewiesen wurde, ist dies nicht einfach möglich, weil (pro Dokumentation) :
Es wurde auch berichtet, dass die Einschränkung mit dblink
umgangen werden kann .
Anleitung dblink in PostgreSQL verwenden (installieren)?
Was bisher fehlte, ist eine richtige Funktion, die es tatsächlich tut:
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;
Überprüft, ob die Datenbank bereits im lokalen Cluster vorhanden ist. Wenn nicht, fahren Sie mit der Erstellung fort - mit einer bereinigten Kennung. Wir möchten keine SQL-Einschleusung einladen.