Когато го опитате, получавате грешката:
ERROR: CREATE DATABASE cannot run inside a transaction block
Това идва от src/backend/access/transam/xact.c (ред 3023 в моите източници, но варира според версията), в PreventTransactionChain(...) .
Коментарът там обяснява следното:
За CREATE DATABASE извиква се от src/backend/tcop/utility.c в standard_ProcessUtility под случая за T_CreatedbStmt , но за съжаление няма информативен коментар, който да казва защо конкретно CREATE DATABASE не е безопасно да се изпълнява в транзакция.
Като гледам източниците, виждам, че от една страна налага контролна точка.
Като цяло обаче не виждам нищо, което наистина да крещи „не можем да направим това транзакционно“. Това е по-скоро „не сме внедрили функционалността да правим това транзакционно“.