sql >> Database >  >> RDS >> PostgreSQL

Zijn de rijen op volgorde vergrendeld in een SELECT ... ORDER BY ... FOR UPDATE-instructie?

De rijen zijn vergrendeld in de volgorde ORDER BY clausule zoals het was toen de tabel werd gescand .

De query wordt uitgevoerd en de rijen worden geordend, waarna PostgreSQL de rijen op volgorde vergrendelt. In wezen, ORDER BY gebeurt vóór FOR UPDATE .

Nu kan het gebeuren dat het vergrendelen van een rij blokken vanwege vergrendelingen die worden vastgehouden door gelijktijdige transacties. Als dat gebeurt, en we zijn bij de READ COMMITTED isolatieniveau, PostgreSQL wacht totdat het de vergrendeling kan krijgen en vervolgens de huidige versie ophaalt van de rij, die het vergrendelt.

Als de gelijktijdige transactie de kolommen heeft gewijzigd die de bestelling definiëren, zal het eindresultaat niet in de volgorde zijn die is gedefinieerd door ORDER BY .




  1. MySQL - rijnummer in recordset?

  2. Toon MySQL-resultaten in een tabel zonder de pagina opnieuw te laden

  3. waar zijn de DMS-klassebestanden van Oracle?

  4. Hoe triggers in laravel te gebruiken?