sql >> Databasteknik >  >> RDS >> PostgreSQL

Är raderna låsta i ordning i en SELECT ... ORDER BY ... FOR UPDATE-sats?

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 .




  1. SET och Select Query kombinerar Kör i en enda MySql-fråga för att klara resultatet i pentaho

  2. exekvera flera inlägg med PreparedStatement - Java

  3. Tomcat 9 med Apache DBCP + Spring 5 + Oracle 12c + SqlArrayValue

  4. SQL:Flytta kolumndata till en annan tabell i samma relation