Mic*_*ier 8 postgresql perl dbi dbd-pg
我正在努力让手动交易按照DBD :: Pg中的说明工作,或者我只是误解了所述文档.
我的理解是,如果我想手动管理事务,我应该关闭AutoCommit.
$dbh->{AutoCommit} = 0;
$dbh->begin_work;
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我会遇到连续的错误
DBD::Pg::db begin_work failed: Already in a transaction
Run Code Online (Sandbox Code Playgroud)
要使其工作,我需要首先打开AutoCommit.
$dbh->{AutoCommit} = 1;
$dbh->begin_work;
Run Code Online (Sandbox Code Playgroud)
但这似乎与任何文档都不一致.
我只是误解了吗?
我的理解是,如果我想手动管理事务,我应该关闭 AutoCommit。
不,恰恰相反。设置AutoCommit为0启动事务,因此您希望将其设置为1。自动提交更改 ( AutoCommit => 1) 就是让数据库不使用事务,这与您想要的相反。