2010-11-03 738 views
1

我在Perl中編程,並與我的postgres數據庫有一個現有的連接(編程)。建立連接後,我不控制連接代碼,我想將自動提交設置爲關閉。postgresql連接並設置自動提交關閉

這是怎麼回事?當我以交互方式進行時,我沒有看到任何變化。我設置自動提交,然後做一個插入,我看到了變化。我做了回滾,我得到沒有交易存在。

我想設置自動提交,做我的工作,然後提交。如何通過現有的連接完成這項工作?

感謝 禮

+1

你不能使用常規的交易的任何原因? – 2010-11-03 16:04:31

回答

5

在連接的中間不應禁用自動提交,因爲它是意外且容易出錯。

最好是顯式啓動和使用這樣的事情結束交易:

$dbh->begin_work(); 
foreach($statement1, $statement2, $statement3) { 
    $dbh->execute($_) 
    or do { $dbh.rollback(); return -1 } 
} 
$dbh->commit(); 

begin_work()將暫時關閉自動提交,直到下一提交或回滾。

但如果你認爲你真的需要讓自己受到傷害,那麼Perl將不會阻止你:

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

正是我所需要的,非常感謝。 – reza 2010-11-05 15:31:02