gpt4 book ai didi

postgresql - 在事务中创建数据库

转载 作者:行者123 更新时间:2023-11-29 11:31:25 36 4
gpt4 key购买 nike

根据 postgresql 文档;

CREATE DATABASE cannot be executed inside a transaction block.

这有技术原因吗?

最佳答案

当你尝试它时,你会得到错误:

ERROR:  CREATE DATABASE cannot run inside a transaction block

这来自 src/backend/access/transam/xact.c(我的源代码中的第 3023 行,但因版本而异),在 PreventTransactionChain(...)

那里的评论解释说:

This routine is to be called by statements that must not run inside a transaction block, typically because they have non-rollback-able side effects or do internal commits.

对于 CREATE DATABASE,在 T_CreatedbStmt< 的情况下,它是从 standard_ProcessUtility 中的 src/backend/tcop/utility.c 调用的,但不幸的是,没有任何信息性评论说明为什么 CREATE DATABASE 在事务中运行不安全。

查看源代码,我可以看到一方面它强制检查点。

不过,总的来说,我没有看到任何真正大声疾呼“我们不能以事务方式执行此操作”的内容。更多的是“我们还没有实现以事务方式执行此操作的功能”。

关于postgresql - 在事务中创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22934602/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com