prøv:
select .....
from <choose your table>
where id in (<your join query here>) for UPDATE;
REDIGER :det kan virke lidt kontraintuitivt med tanke på det spørgsmål, du linkede til (som spurgte, hvordan man undværer en IN
), men kan stadig give fordele, hvis din deltagelse returnerer et begrænset sæt. Der er dog ingen løsning:Orakel-undtagelsen er ret selvforklarende; oracle ved ikke, hvilke rækker der skal låses på grund af DISTINCT
. Du kan enten udelade DISTINCT
eller definere alt i en visning og derefter opdatere det, hvis du vil, uden den eksplicitte lås: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm