2

複数の Ajax リクエストを PHP ページ (backend.php) に送信する必要がある Web アプリケーションがあります。

Oracleテーブルがあります。2 つの int フィールドminmaxを持つT1としましょう(この例で十分ですが、実際にはもう少し複雑です)。

Backend.php はmixmaxを読み取り、これらの値を更新し (min += 2、max += 3 としましょう)、JSON 経由で min と max を返す必要があります。

この場合、Oracle シーケンスを使用できません (実際のアプリケーションには N 行があるため)。

行から同じ値を読み取る別の Ajax 呼び出しを避けるために、行をロックしたいと考えています。

私は(PHPのOCIを介して)何かを実行しようとしましたSELECT a, b FROM t1 FOR UPDATE SKIP LOCKEDが、うまくいかないようです.2つのAjax呼び出しは時々同じAとBの値を返します。

ロックを機能させるにはどうすればよいですか? より良い方法はありますか?ありがとうございました。

4

1 に答える 1

0

明示的なロックが必要かどうかはわかりません。シンプルな

update T1 set min=min+2, max=max+3 where ...

影響を受ける行を自動的にロックします。

更新された値を返す (または PL/SQL で RETURNING を使用する) には、別の選択が必要になる場合があります。

于 2013-04-20T11:31:32.347 に答える