postgresql连接和设置自动提交关闭

时间:2010-11-03 15:55:55

标签: perl postgresql dbi autocommit

我在perl中编程并且与postgres数据库有一个现有的连接(progammatically)。建立连接后,我不控制连接代码,我想将自动提交设置为关闭。

如何做到这一点?当我以交互方式进行时,我看不到任何变化。我设置了自动提交然后执行插入,我看到了更改。我做回滚,我得到的是没有交易存在。

我想设置autocommit,做我的工作然后提交。如何通过现有连接实现这一目标?

由于 礼

1 个答案:

答案 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;
相关问题