1
私のアプリケーションの3つの異なるインスタンスで実行されているすべてのクエリは、テーブルから行を1つずつキューとして読み取ろうとしています。次のロックされていない行を読み取る
SELECT * FROM order_request_status ors WHERE ors.status = 'new' and ROWNUM <= 1 order by ors.id asc for update skip locked
ここで問題となるのは、1つのアプリケーションインスタンスによって行がロックされていて、2番目のアプリケーションインスタンスがクエリによってロックされていない次の行を読み込みたい場合です。しかし、これによって動作していません - 更新スキップがロックされています。
oracle dbを使用してキューのような機能を実装する方法をお勧めします。
カーソルからレコードを1つだけ取得するにはどうすればよいですか?私はそれを制限するrownumを使用しているので、私は昇順でIDを注文することでシステムに入力された最初のレコードを取り出すことができます。 – vashishth
'rをcur rにフェッチする 'https://docs.oracle.com/database/121/LNPLS/static.htm#GUID-9DEED64C-A87E-4EAD-97DA-ABDD3FDF172C –