zkuste:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
UPRAVIT :to se může zdát trochu neintuitivní, vezmeme-li v úvahu otázku, na kterou jste odkazovali (která zjišťovala, jak se obejít bez IN
), ale stále může poskytovat výhody, pokud vaše spojení vrátí omezenou sadu. Neexistuje však žádné řešení:výjimka věštce je docela samozřejmá; Oracle neví, které řádky zamknout kvůli DISTINCT
. Můžete buď vynechat DISTINCT
nebo definujte vše v pohledu a pak to aktualizujte, pokud chcete, bez explicitního zámku: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm