essayez :
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
MODIFIER :cela peut sembler un peu contre-intuitif compte tenu de la question à laquelle vous avez lié (qui demandait comment se passer d'un IN
), mais peut toujours offrir des avantages si votre jointure renvoie un ensemble restreint. Cependant, il n'y a pas de solution de contournement :l'exception oracle est assez explicite ; oracle ne sait pas quelles lignes verrouiller à cause du DISTINCT
. Vous pouvez soit omettre le DISTINCT
ou définissez tout dans une vue, puis mettez-la à jour, si vous le souhaitez, sans le verrou explicite : http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm