sql >> Database >  >> RDS >> PostgreSQL

CREER DATABASE binnen transactie

Als je het probeert, krijg je de foutmelding:

ERROR:  CREATE DATABASE cannot run inside a transaction block

Dit komt van src/backend/access/transam/xact.c (regel 3023 op mijn bronnen, maar verschilt per versie), in PreventTransactionChain(...) .

De opmerking daar legt uit dat:

Voor CREATE DATABASE het wordt aangeroepen vanaf src/backend/tcop/utility.c in standard_ProcessUtility onder de zaak voor T_CreatedbStmt , maar helaas is er geen informatieve opmerking die zegt waarom specifiek CREATE DATABASE is niet veilig om een ​​transactie uit te voeren.

Als ik naar de bronnen kijk, zie ik dat het onder meer een checkpoint forceert.

Over het algemeen zie ik echter niets dat echt schreeuwt:"we kunnen dit niet op transactiebasis doen". Het is meer "we hebben de functionaliteit niet geïmplementeerd om dit transactioneel te doen".



  1. Hoe toegang krijgen tot een MySQL-databasewebservice via LAN?

  2. MariaDB JSON_ARRAYAGG() uitgelegd

  3. Partities en High Water Mark in Oracle

  4. Laatste rij selecteren ZONDER enige soort sleutel