SQLServerへodbc接続トランザクション
PHP 5.6.3
SQLServer 2014
IIS 8.5
Web上からPHPへPOSTし、SQLServerへODBC関数(http://php.net/manual/ja/ref.uodbc.php)を使用して接続しています。
その際「odbc_autocommit」を使用しトランザクションをかけているのですが、
同時にDBへ登録(Insert、Delete)をしたときに競合してしまいました。
そもそも「odbc_autocommit」の挙動として、
(1)A端末からDBへ接続
(2)A端末から「odbc_autocommit」を使用しトランザクション
(3)B端末からDBへ接続
(4)B端末から「odbc_autocommit」を使用しトランザクション
(5)A端末からTEST_TABLEへInsert
(6)B端末からTEST_TABLEへInsert
上記手順の(4)の動作の際に、A端末の操作が終わるまでBは待たされるorエラーでかえると想定していたのですが・・・
-----------------------------------------------------------
$serverCon = odbc_connect($serverName,$userName,$password);
if($serverCon === false){
$strMsg = ERRMSG_DBCONNECT;
writeLog($strMsg, DEBUG_LOG);
jumpSystemErrPage();
exit();
}
$boCon = true;
// 自動コミットをさせないようにする
$a = odbc_autocommit($serverCon,false);
if($a === false){
$strMsg = ERRMSG_DBCONNECT;
writeLog($strMsg, DEBUG_LOG);
$aaaa = odbc_errormsg($serverCon);
writeLog($aaaa, DEBUG_LOG);
jumpSystemErrPage();
exit();
}
-----------------------------------------------------------
確認方法として
A端末にてデバッグ状態から上記ソース上の
if($a === false){ の行でブレイクしてる最中に
B端末から普通に実行した際に
$aがfalseのルートに通らずそのまま次の処理へ行ってしまいました。
PHPのODBC接続で更新中にトランザクション(ロック)をかけるのはできないのでしょうか?
それとも自分のやり方が間違っているのでしょうか?
よろしくお願いします。
お礼
早速の回答ありがとうございました。 これまでYouTubeを見ていました。ところが、見たい動画をクリックすると質問事項が表示され見られなくなりました。 「Aql serverをご利用」という程、パソコンには精通しておりません。 もし、よろしければもう少しくわしく教えて頂きたいのですが。 よろしく、おねがいします。