Câu hỏi này đã cũ, nhưng vì lợi ích của sự hoàn chỉnh ...
Như đã được chỉ ra trong các câu trả lời khác, điều đó không đơn giản là có thể vì (theo tài liệu) :
Nó cũng đã được báo cáo rằng hạn chế có thể được bỏ qua bằng dblink
.
Cách thực hiện sử dụng (cài đặt) dblink trong PostgreSQL?
Điều còn thiếu cho đến nay là một chức năng thích hợp thực sự làm được điều đó:
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;
Kiểm tra xem db đã tồn tại trong cụm cục bộ hay chưa. Nếu không, hãy tiếp tục tạo nó - với một số nhận dạng đã được khử trùng. Chúng tôi không muốn mời SQL injection.