जब आप इसे आजमाते हैं, तो आपको त्रुटि मिलती है:
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
लेन-देन में चलना सुरक्षित नहीं है।
सूत्रों को देखते हुए, मैं देख सकता हूं कि एक चीज के लिए यह एक चौकी को मजबूर करता है।
कुल मिलाकर, हालांकि, मुझे ऐसा कुछ भी नहीं दिख रहा है जो वास्तव में चिल्लाता हो "हम इसे लेन-देन नहीं कर सकते"। यह अधिक है "हमने इसे लेन-देन करने के लिए कार्यक्षमता को लागू नहीं किया है"।