prueba:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
EDITAR :eso puede parecer un poco contrario a la intuición teniendo en cuenta la pregunta a la que se vinculó (que preguntaba cómo prescindir de un IN
), pero aún puede proporcionar beneficios si su combinación devuelve un conjunto restringido. Sin embargo, no hay solución:la excepción de Oracle se explica por sí misma; Oracle no sabe qué filas bloquear debido a DISTINCT
. Puede omitir DISTINCT
o defina todo en una vista y luego actualícelo, si lo desea, sin el bloqueo explícito: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm