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