tenshiks回答ポイント 100ptウォッチ 3

【PostgreSQL】PHPとPostgreSQLの組み合わせで、例えば以下のようなソースがあるとします。


複数のユーザーが単一行を書き換える場合で、
間にSELECTで得たデータを必要とする処理があるので、あるユーザーが$query2のUPDATEを終了するまで$query1のSELECTをさせたくありません。

このような場合のトランザクションはどのようにしたら良いのでしょうか?
どうも隔離レベルの問題なのか何なのか、SELECTの前にBEGIN、UPDATE後にCOMMITさせても上手くいきません。
このような処理の場合の適切なトランザクションを下記ソースを書き換える形で教えてください。

$sql1 = "SELECT data1 FROM table1 WHERE deta2 = '123';";
$query1 = pg_query($sql1);

$array = pg_fetch_array($query);

// PHP側での処理を挟む
$buff = $array[data1] . $_POST[comment]

$sql2 = "UPDATE table1 SET data1 = '$rep' WHERE deta2 = '123';";
$query2 = pg_query($sql2);

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

みんなの回答

この質問へのコメント

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

質問の情報

登録日時
2007-04-19 19:42:04
終了日時
2007-04-20 09:11:40
回答条件
1人2回まで

この質問のカテゴリ

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

postgreSQL330トランザクション58PHP7798BEGIN96

人気の質問

メニュー

PC版