[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 メーリングリストの案内