Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich FOR UPDATE mit einem JOIN auf Oracle verwenden?

versuchen:

select ..... 
from <choose your table>
where id in (<your join query here>) for UPDATE;

BEARBEITEN :Das mag angesichts der von Ihnen verlinkten Frage etwas kontraintuitiv erscheinen (wobei gefragt wurde, wie auf einen IN verzichtet werden kann ), kann aber dennoch Vorteile bieten, wenn Ihr Join einen eingeschränkten Satz zurückgibt. Es gibt jedoch keine Problemumgehung:Die Orakel-Ausnahme ist ziemlich selbsterklärend; Oracle weiß nicht, welche Zeilen wegen DISTINCT gesperrt werden sollen . Sie können entweder DISTINCT weglassen oder definieren Sie alles in einer Ansicht und aktualisieren Sie diese dann, wenn Sie möchten, ohne die explizite Sperre: http://www.dba-oracle.com/t_ora_02014_cannot_select_for_update.htm