sql >> Database teknologi >  >> RDS >> PostgreSQL

Er rækkerne låst i rækkefølge i en SELECT ... ORDER BY ... FOR UPDATE-sætning?

Rækkerne er låst i rækkefølgen ORDER BY klausul som den var, da tabellen blev scannet .

Forespørgslen udføres og rækkerne ordnes, derefter låser PostgreSQL rækkerne i rækkefølge. Grundlæggende er ORDER BY sker før FOR UPDATE .

Nu kan det ske, at låsning af en række blokerer på grund af låse holdt af samtidige transaktioner. Hvis det sker, og vi er ved READ COMMITTED isolationsniveau, PostgreSQL venter indtil den kan få låsen og derefter henter den aktuelle version af rækken, som den låser.

Hvis den samtidige transaktion ændrede kolonnerne, der definerer bestillingen, vil det endelige resultat ikke være i den rækkefølge, der er defineret af ORDER BY .




  1. Øg kolonneværdien på en bestemt betingelse i SQL-forespørgsel på Postgresql

  2. Forsøger at bestille bord flere gange

  3. sum højeste forekomst i træk

  4. Fordi du skal kende PowerShell