[PHP-users 18840]HTTPリクエストをまたぐORACLEの行ロックはできますか?

Makoto Umeda umeda @ yck.co.jp
2003年 11月 7日 (金) 12:06:05 JST


はじめまして、いつもお世話になっております。
複数のHTTPリクエストをまたぐORACLEの行ロックを行わなければならない状況にあります。
如何なる方法でも構いませんので、教えていただけないでしょうか?

現在試しているのは、以下の環境です。
    DBサーバー:Win2000+Oracle8 Release 8.1.7
    Webサーバー:Win2000+Apache/1.3.26(Win32) 
                        PHP/4.3.1(サーバーモジュールとして起動)

オラクルの持続的接続(OCIPlogon)中の行ロックを試していますがうまくいきません。
行ロックをかける部分のソースは以下の通りです。
//
//OCIPlogonによる持続的接続
//
$conn = OCIPLogon($username,$password,$servicename); 
if(!$conn) {
    exit;
}
//
//select for updateによる行ロック
//
$sql="select NO from TBL where NO='1' for update nowait";
$stmt=OCIParse($conn,$sql);
if(!$stmt) {
    OCILogOff($conn);
    exit;
}
$sts=OCIExecute($stmt,OCI_DEFAULT);
if(!$sts) {
    OCIFreeStatement($stmt);
    OCILogOff($conn);
    exit;
}

このスクリプトを抜けたあとにORACLE側のセッション情報をみると、
接続はちゃんと残ったままになっていますが、
ロックテーブルを参照すると、ロックはかかっておらず、
行ロックははずれてしまっています。

HTTPリクエストをまたぐロックは所詮無理なんでしょうか?
よろしくお願いいたします。

----------------------------------------------
梅田 真 umeda @ yck.co.jp




PHP-users メーリングリストの案内