Först, som minst du borde göra en SELECT ... FOR UPDATE så du låser raderna mot andra SELECT ... FOR [SHARE|UPDATE] tillgång. Du måste göra detta i en transaktion och hålla kvar den transaktionen tills du uppdaterar den sista raden och commit .
Raderna du SELECT ... FOR UPDATE inte låst mot normal SELECT; de är fortfarande läsbara för andra transaktioner som inte använder FOR UPDATE eller FOR SHARE .
Ännu bättre, försök att omformulera det hela som en UPDATE ... FROM eller annan set-baserad operation där du gör allt arbete i en enda fråga. Det kommer i allmänhet att prestera mycket bättre än en SELECT ... FOR UPDATE följt av en ström av UPDATE s.