この質問は古いですが、完全を期すために...
他の回答で指摘されているように、(ドキュメントごと) :
dblink
で制限を回避できることも報告されています 。
方法PostgreSQLでdblinkを使用(インストール)しますか?
これまで欠けていたのは、実際にそれを実行する適切な関数です:
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;
データベースがローカルクラスターにすでに存在するかどうかを確認します。そうでない場合は、サニタイズされた識別子を使用して作成に進みます。 SQLインジェクションを招待したくありません。