この問題があります。更新にロック レコードを使用しようとしています。私は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は何ですか?
私の理解では、このロックは、更新コミットまたはロールバックが呼び出された後に解放されます。