опитайте:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
РЕДАКТИРАНЕ :това може да изглежда малко неинтуитивно, като се има предвид въпросът, към който сте се свързали (който пита как да се откажете от IN
), но все пак може да осигури полза, ако вашето присъединяване върне ограничен набор. Въпреки това, няма заобиколно решение:изключението от оракул е доста очевидно; оракул не знае кои редове да заключи поради DISTINCT
. Можете или да пропуснете DISTINCT
или дефинирайте всичко в изглед и след това го актуализирайте, ако желаете, без изричното заключване: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm