gpt4 book ai didi

perl - DBD::Pg 中的手动事务管理

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

我很难让手动事务按照 DBD::Pg 中的记录工作,或者我只是误解了所述文档。

我的理解是,如果我想手动管理事务,我应该关闭 AutoCommit。

$dbh->{AutoCommit} = 0;
$dbh->begin_work;

但是当我这样做时,我会不断出错

DBD::Pg::db begin_work failed: Already in a transaction

要让它工作,我需要先打开 AutoCommit。

$dbh->{AutoCommit} = 1;
$dbh->begin_work;

但这似乎与任何文档都不一致。

我是不是误会了?

最佳答案

My understanding is that if I want to manually manage transactions, I should turn off AutoCommit.

正确。

但是,DBD::Pg 会自动为您启动事务。您无法手动启动交易。您最好的选择是关闭自动提交,然后执行以下操作:

 $dbh->commit;

当你准备好提交时。这将同时提交现有事务并启动新事务。

现在,如果您将自动提交设置为开,则任何存在于事务之外的事物都将成为其自身的事务,每个语句一个事务。如果您想确保手动管理事务,您希望将其关闭。

关于perl - DBD::Pg 中的手动事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078913/

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