PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo cơ sở dữ liệu bằng cách sử dụng một chức năng được lưu trữ

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quét đống Bitmap trong một kế hoạch truy vấn là gì?

  2. Làm cách nào để tôi có thể nhập dữ liệu từ ASCII (ISO / IEC 8859-1) vào cơ sở dữ liệu Rails / PGSQL của mình?

  3. Chính xác thì câu lệnh dữ liệu / this trong SAS đang làm gì? PostgreSQL tương đương?

  4. Thực hiện tác vụ để cắt ngắn tất cả các bảng trong Rails 3

  5. Tìm và thay thế biểu thức chính quy trong Postgres