Saat Anda mencobanya, Anda mendapatkan kesalahan:
ERROR: CREATE DATABASE cannot run inside a transaction block
Ini berasal dari src/backend/access/transam/xact.c (baris 3023 pada sumber saya, tetapi bervariasi menurut versi), di PreventTransactionChain(...) .
Komentar di sana menjelaskan bahwa:
Untuk CREATE DATABASE itu dipanggil dari src/backend/tcop/utility.c di standard_ProcessUtility di bawah kasus T_CreatedbStmt , tapi sayangnya tidak ada komentar informatif yang mengatakan mengapa secara khusus CREATE DATABASE tidak aman untuk dijalankan dalam suatu transaksi.
Melihat sumbernya, saya dapat melihat bahwa untuk satu hal itu memaksa pos pemeriksaan.
Namun, secara keseluruhan, saya tidak melihat apa pun yang benar-benar meneriakkan "kita tidak dapat melakukan ini secara transaksional". Ini lebih "kami belum menerapkan fungsionalitas untuk melakukan ini secara transaksional".