sql >> データベース >  >> RDS >> PostgreSQL

ストアド関数を使用してデータベースを作成する

    この質問は古いですが、完全を期すために...

    他の回答で指摘されているように、(ドキュメントごと)

    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インジェクションを招待したくありません。



    1. 外部キーのステータスが行ごとに異なる場合に、ステータスに基づいて親テーブルと子テーブルからデータを取得する方法

    2. 複数の行の最後に挿入されたIDを取得する

    3. ユーザーとして接続されている場合、Oracleデータベースにdba_users情報を収集します

    4. データベースが定期的にバックアップされるようにする方法