我在perl中编程并且与postgres数据库有一个现有的连接(progammatically)。建立连接后,我不控制连接代码,我想将自动提交设置为关闭。
如何做到这一点?当我以交互方式进行时,我看不到任何变化。我设置了自动提交然后执行插入,我看到了更改。我做回滚,我得到的是没有交易存在。
我想设置autocommit,做我的工作然后提交。如何通过现有连接实现这一目标?
由于 礼
答案 0 :(得分:5)
您不应该在连接中间禁用 autocommit ,因为它是意外且容易出错的。
最好是使用以下内容显式启动和结束事务:
$dbh->begin_work();
foreach($statement1, $statement2, $statement3) {
$dbh->execute($_)
or do { $dbh.rollback(); return -1 }
}
$dbh->commit();
begin_work()
将暂时关闭自动提交,直到下次提交或回滚。
但如果你认为你真的需要伤害自己,那么perl不会阻止你:
$dbh->{AutoCommit} = 0;