PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

UTWÓRZ BAZĘ DANYCH wewnątrz transakcji

Gdy spróbujesz, pojawi się błąd:

ERROR:  CREATE DATABASE cannot run inside a transaction block

Pochodzi z src/backend/access/transam/xact.c (wiersz 3023 w moich źródłach, ale różni się w zależności od wersji), w PreventTransactionChain(...) .

Komentarz wyjaśnia, że:

Dla CREATE DATABASE jest wywoływany z src/backend/tcop/utility.c w standard_ProcessUtility w przypadku T_CreatedbStmt , ale niestety nie ma żadnego komentarza informacyjnego, który wyjaśniałby, dlaczego konkretnie CREATE DATABASE nie jest bezpieczne do uruchomienia w transakcji.

Patrząc na źródła, widzę, że po pierwsze wymusza to punkt kontrolny.

Ogólnie rzecz biorąc, nie widzę niczego, co naprawdę krzyczałoby „nie możemy tego zrobić transakcyjnie”. Chodzi raczej o to, że „nie zaimplementowaliśmy funkcjonalności do robienia tego transakcyjnie”.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz dane z php do skryptu c#

  2. Jak dokładnie działa funkcja round w postgresql?

  3. Połączenie zewnętrzne 3 lub więcej stołów w Laravel 8

  4. Różnica w kolejności literałów typu enum między PostgreSQL 9.0 i 9.1

  5. Entity Framework core — zawiera czy wielkość liter jest rozróżniana lub wielkość liter nie jest rozróżniana?