jayz回答ポイント 300ptウォッチ

PHP5.2 x Postgres8.xのトランザクションについて


Postgresのトランザクションについて調べると、トランザクションを開始
した場合、ロールバック、もしくはコミットをするか、設定値の時間が
経過しないとトランザクションは終了しない。となっていました。
確かに、コンソール上で、Postgresを操作すると、上記のような動作に
なっていることを確認しましたが、PHPのスクリプト上でトランザクションを
実行すると、少し違う動きをするようでした。

例えば、下記のような場合、exitした時点でトランザクションが終了していました。
本来であれば、exitする前にロールバックする処理をいれるべきなのかと思いましたが
この場合は特になにもしないでよいのでしょうか。
---
$mdb2->beginTransaction();

$sql = "SELECT * FROM test WHERE id = ? FOR UPDATE";
$res = $mdb2->execute(array("100"));
$status = $res->fetchOne("status");

// ↓エラーが起きた場合。ここにロールバックする処理は入れない?
if (!$status) {
header("Location: http://errorerrorerror")
exit;
}

// ここにtestテーブルをUPDATEする処理など

$mdb2->commit();
?>

皆さんはどうされているのか知りたくて質問しました。
よろしくお願いします。


※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2012-04-26 14:58:42
終了日時
2012-05-03 15:00:06
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

MDB223ロールバック15SQL1319トランザクション58PHP7798スクリプト2307EXIT194

人気の質問

メニュー

PC版