試してみてください:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
編集 :リンクした質問(IN
を省く方法を尋ねた質問)を考えると、少し直感に反するように思えるかもしれません。 )。ただし、参加によって制限されたセットが返される場合でも、メリットが得られる可能性があります。ただし、回避策はありません。oracleの例外は一目瞭然です。 DISTINCT
が原因で、オラクルはロックする行を認識していません。 。 DISTINCT
を省略することもできます または、ビュー内のすべてを定義してから、必要に応じて、明示的なロックなしで更新します。 http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm