tentar:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
EDITAR :isso pode parecer um pouco contra-intuitivo, tendo em mente a pergunta à qual você vinculou (que perguntava como dispensar um
IN
), mas ainda pode fornecer benefícios se sua associação retornar um conjunto restrito. No entanto, não há solução alternativa:a exceção do oráculo é bastante autoexplicativa; oracle não sabe quais linhas bloquear por causa do DISTINCT
. Você pode deixar de fora o DISTINCT
ou defina tudo em uma visualização e atualize isso, se quiser, sem o bloqueio explícito: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm