Този въпрос е стар, но за пълнота...
Както беше посочено в други отговори, това не е просто възможно, защото (по документация) :
Също така беше съобщено, че ограничението може да бъде заобиколено с dblink
.
>Как да да използвате (инсталирате) dblink в PostgreSQL?
Това, което липсваше досега, е правилна функция, която всъщност да го прави:
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;
Проверява дали db вече съществува в локалния клъстер. Ако не, продължете да го създавате - със саниран идентификатор. Не бихме искали да поканим SQL инжектиране.