[PHP-users 11564] PHPでPostgreSQLのトランザクションを実行するには?
js
php-users@php.gr.jp
Tue, 19 Nov 2002 11:12:46 +0900
こんにちわ。No5573の真似をして、トランザクション中以下のようにテーブルに対し
てロックを掛けたいと思うのですがうまくロックが掛かりません。
$db_con = pg_connect("host=host port=5432 user=postgres dbname=hogehoge");
if($db_con == false){
echo "接続できませんでした。";
exit;
}
$sql = "BEGIN;";
$rs = pg_query($db_con, $sql);
if ($rs == false){
echo "失敗\n";
exit;
}
$sql = "LOCK TABLE hoge_table IN ACCESS EXCLUSIVE MODE;";
$rs = pg_query($db_con, $sql);
if ($rs == false){
echo "失敗\n";
exit;
}
INSERT,UPDATE....
このロックを掛けるとROLLBACK COMMIT するまで テーブル hoge_table にアクセス
出来ないようにしたいのですが
別のアプリケーション(ACCESSやpsql)でテーブルを参照すると全ての操作が行えて
しまいます。
psqlから同じようにロックを掛けた場合はロックが有効になりROLLBACK COMMIT する
までアクセスすることが出来ない
状況になりました。
データベースの所有者もスーパーユーザー(postgres)でPHPからのアクセスもスー
パーユーザーでやってみましたが出来ませんでした。
どのようにすればPHPからもロックを掛けることが出来るようになるのでしょうか?
よろしくお願いいたします。