Raderna är låsta i ordningen ORDER BY
klausul som det var när tabellen skannades .
Frågan exekveras och raderna ordnas, sedan låser PostgreSQL raderna i ordning. I huvudsak ORDER BY
händer före FOR UPDATE
.
Nu kan det hända att låsning av en rad blockerar på grund av lås som innehas av samtidiga transaktioner. Om det händer, och vi är vid READ COMMITTED
isoleringsnivå, PostgreSQL väntar tills den kan hämta låset och hämtar sedan den aktuella versionen av raden, som den låser.
Om den samtidiga transaktionen ändrade kolumnerna som definierar beställningen, kommer det slutliga resultatet inte att vara i den ordning som definieras av ORDER BY
.