sql >> Database teknologi >  >> RDS >> PostgreSQL

OPRET DATABASE inde i transaktionen

Når du prøver det, får du fejlen:

ERROR:  CREATE DATABASE cannot run inside a transaction block

Dette kommer fra src/backend/access/transam/xact.c (linje 3023 på mine kilder, men varierer efter version), i PreventTransactionChain(...) .

Kommentaren der forklarer, at:

For CREATE DATABASE det kaldes fra src/backend/tcop/utility.c i standard_ProcessUtility under sagen for T_CreatedbStmt , men der er desværre ikke nogen informativ kommentar, der siger hvorfor specifikt CREATE DATABASE er ikke sikkert at køre i en transaktion.

Når jeg ser på kilderne, kan jeg se, at det for det første tvinger et kontrolpunkt.

Overordnet set kan jeg dog ikke se noget, der virkelig skriger "vi kan ikke gøre det her transaktionsmæssigt". Det er mere "vi har ikke implementeret funktionaliteten til at gøre dette transaktionelt".



  1. Hvordan håndterer jeg bånd, når jeg rangerer resultater i MySQL?

  2. SQL-heltalsområde ved oprettelse af tabeller

  3. Android SQLite-databasetabel oprettes ikke

  4. CakePHP vil ikke anvende gruppe efter tilstand