sql >> Databasteknik >  >> RDS >> PostgreSQL

SKAPA DATABAS inuti transaktionen

När du provar det får du felmeddelandet:

ERROR:  CREATE DATABASE cannot run inside a transaction block

Detta kommer från src/backend/access/transam/xact.c (rad 3023 på mina källor, men varierar beroende på version), i PreventTransactionChain(...) .

Kommentaren där förklarar att:

För CREATE DATABASE det anropas från src/backend/tcop/utility.c i standard_ProcessUtility under fallet för T_CreatedbStmt , men tyvärr finns det ingen informativ kommentar som säger varför specifikt CREATE DATABASE är inte säkert att köra i en transaktion.

När jag tittar på källorna kan jag se att det för det första tvingar fram en kontrollpunkt.

Sammantaget ser jag dock ingenting som verkligen skriker ut "vi kan inte göra det här transaktionsmässigt". Det är mer "vi har inte implementerat funktionaliteten för att göra detta transaktionellt".



  1. Hur redigerar jag BLOBs (som innehåller JSON) i Oracle SQL Developer?

  2. Anslutningen hänger sig efter tid av inaktivitet

  3. hur anpassar man "visa processlista" i mysql?

  4. Symfony2 Doctrine - ILIKE-klausul för PostgreSQL?