1

この問題があります。更新にロック レコードを使用しようとしています。私はphpを使用しており、データベースとしてoracleを使用しています。完全には理解できませんでしたが、以前の開発者コードをコピーして機能させることができました。

odbc_exec()、odbc_fetch_row() を使用しています。これは、マイクロソフトのアクセス データベースに使用されると思われます。しかし、私は知りません。また、jqueryを使用してこのphpファイルを取得し(jquery postを使用)、現在のページに追加しています。

しかし今、私の先輩は、誰かが 1 つのレコードを編集しているかどうかを確認するように私に要求します。その後、もう一方はそれを編集できなくなります。彼らは、接続を閉じないことについて何か言った. 1ページがロードされた後、PHPはデータベースへの接続を閉じられませんか(私のようにjqueryを使用してページを取得している場合)? 私が知っていることから、ページが読み込まれている場合。データベースへの接続が閉じられます。

このコードを試してみたいのですが、間違っていると接続がハングするのではないかと心配しています。

今、私のSQLはすべての会社を選択するためにこのようなものです。

$sqlStr ="select * from company";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
    $company_id=odbc_result($rs,"company_id");
}

そして、編集する会社を選択します

$sqlStr ="select * from company where company_id='34'";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
}

アップデート

$sqlStr ="update compay set company_name=? where company_id=?";
$stmt = odbc_prepare($GblConnOra , $sqlStr);
$res = odbc_execute($stmt, array($company_name, $company_id));

私はSQLがこのようになると思います。レコードをロックします。

$sqlStr ="select * from company for update skip locked";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
    $company_id=odbc_result($rs,"company_id");
}

私はこれを行うことができますか?編集する行を選択するための私のSQLは何ですか? 行を更新するための私のSQLは何ですか?

私の理解では、このロックは、更新コミットまたはロールバックが呼び出された後に解放されます。

4

0 に答える 0