gpt4 book ai didi

sql - postgresql 中的自动提交是否意味着您不能拥有事务 block ?

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

如果自动提交开启(默认情况下),postgresql 会将每个语句视为一个事务。

所以如果我有一个带有start transactioncommit 的显式事务 block ,这是否意味着该 block 不是原子执行的并且不能回滚? (由于自动提交, block 内的每个语句本身就是一个事务)。

最佳答案

恰恰相反。

启用自动提交后,使用start transaction 是将多个语句合并到单个事务中的唯一方法。

事实上,Postgres 总是在服务器上使用自动提交,除非客户端使用start transaction(或begin transaction)。当您关闭自动提交时,客户端将自动为您发送这些语句。

Quote from the manual

BEGIN initiates a transaction block, that is, all statements after a BEGIN command will be executed in a single transaction until an explicit COMMIT or ROLLBACK is given. By default (without BEGIN), PostgreSQL executes transactions in “autocommit” mode

(强调我的)

BEGINSTART TRANSACTION

相同

关于sql - postgresql 中的自动提交是否意味着您不能拥有事务 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456134/

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