1

私はperlでプログラミングしており、postgresデータベースと(プログラム的に)既存の接続を持っています。接続が確立された後、接続コードを制御しません。自動コミットをオフに設定したいです。

どうやってそれをするのですか?対話的に行うと、何の変化も見られません。自動コミットをオフに設定して挿入すると、変更が表示されます。ロールバックを実行すると、トランザクションが存在しないことがわかります。

自動コミットをオフに設定し、作業を行ってからコミットしたいと考えています。既存の接続でそれをどのように達成しますか?

ありがとうレザ

4

1 に答える 1

5

予期せずエラーが発生しやすいため、接続中に自動コミットを無効にしないでください。

最善の方法は、次のような方法でトランザクションを明示的に開始および終了することです。

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

begin_work()次のコミットまたはロールバックまで、自動コミットを一時的にオフにします。

しかし、本当に自分を傷つける必要があると思うなら、perl はあなたを止めません:

$dbh->{AutoCommit} = 0;
于 2010-11-03T16:31:02.463 に答える