prova:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
MODIFICA :potrebbe sembrare un po' controintuitivo tenendo presente la domanda a cui ti sei collegato (che chiedeva come fare a meno di un IN
), ma può comunque fornire vantaggi se la tua iscrizione restituisce un set limitato. Tuttavia, non esiste una soluzione alternativa:l'eccezione Oracle è abbastanza autoesplicativa; Oracle non sa quali righe bloccare a causa di DISTINCT
. Puoi omettere DISTINCT
oppure definisci tutto in una vista e poi aggiornala, se lo desideri, senza il blocco esplicito: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm