行がOracleで更新のためにロックされているかどうかをテストできる方法はありますか?
例として、次のクエリが 1 人のユーザーによって実行されたとします。
select * from SOME_TABLE where THE_ID = 1000 for update;
THE_ID = 1000
別のユーザーで、行がロックされているかどうかを確認したい。更新などを試みると、2 番目のユーザーがブロックされ、待機したままになります (それは望ましくありません)。
また、2 番目のユーザーで次のクエリを実行してみました。
select * from SOME_TABLE where THE_ID = 1000 for update NOWAIT;
同じ行に 2 つのロックを配置できないため、これは失敗します。そして、そうです。「ORA-00054: リソースがビジーで、NOWAIT 指定エラーで取得します」というメッセージが表示されます。ロックの存在を確認するためにこのエラーを常に当てにすることはできますか、または行がロックされているかどうかを判断するためのより簡単でクリーンな方法はありますか?
ありがとうございました!