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

トランザクション内のCREATEDATABASE

    試してみると、エラーが発生します:

    ERROR:  CREATE DATABASE cannot run inside a transaction block
    

    これはsrc/backend/access/transam/xact.cから取得されます (私のソースでは3023行目ですが、バージョンによって異なります)、PreventTransactionChain(...)

    そこでのコメントはそれを説明しています:

    CREATE DATABASEの場合 src/backend/tcop/utility.cから呼び出されます standard_ProcessUtilityT_CreatedbStmtの場合 、しかし残念ながら、特にCREATE DATABASEの理由を説明する有益なコメントはありません。 トランザクションで実行するのは安全ではありません。

    ソースを見ると、1つにはチェックポイントが強制されていることがわかります。

    しかし、全体として、「これをトランザクションで実行することはできません」と本当に叫ぶものは何も見当たりません。それは、「これをトランザクションで実行する機能を実装していない」ということです。



    1. EC2MySQLインストールにリモート接続できません

    2. 拡張イベントを使用して、SQL Serverインスタンスで使用されている廃止された機能をログに記録する(T-SQLの例)

    3. カンマ区切りの値を持つリストをフェッチするPostgres

    4. MySQL-Pythonのインストールが終了ステータス1120で失敗しました