[PHP-users 11620] Re: PHPでPostgreSQL のトランザクションを実行するには?

E-Mail php-users@php.gr.jp
Wed, 20 Nov 2002 12:26:15 +0900


----- Original Message -----
From: "js" <jsibasaki@luftwaffe.zive.net>
> ただ、一つしっくりこないのがLOCK TABLEを実行するとCOMMIT or ROLLBACK が来
る
> までLOCKしたまま
> になるかと思っていたのですがphpから行う場合ロックする時間を指定する必要が
あ
> るのでしょうか?
> それともINSERT、UPDATEが終わると自動的にロックが解除されるのでしょうか?
>
> 私のイメージだとCOMMITをプログラムから外すとテーブルをずっと読み込む事が出
来
> ない状況が続くのだろう
> と思っていたのです。(もちろんこれはトラブルの原因になることは間違いないの
で
> 自動ロック解除のがありがたいです)
>
> PHPからトランザクションを行う場合はテーブルロックのようが無ければ、自動的
に
> 解除してくれると解釈してもよいのでしょうか?
> 明示的なロックが必要なケースはあまりないと思うのですがはっきりさせたいで
す。


こんにちは。白石です。

$conn=pg_connect("host=dbhost user=dbuser password=password dbname=dbname
port=5432");
$query="BEGIN;";
$result=pg_exec($conn,$query);
$query="INSRET INTO ....;";
$result=pg_exec($conn,$query);
if(!$result){
$query="ROLLBACK;";
$result=pg_exec($conn,$query);
exit;
}
pg_close($conn);

といったような流れで利用していますが、私も明示的にロックする必要があるのかど
うか
ぜひ知りたいです。お願いいたします。