Først minimum du burde lave en SELECT ... FOR UPDATE så du låser rækkerne mod andre SELECT ... FOR [SHARE|UPDATE] adgang. Du skal gøre dette inde i en transaktion og holde denne transaktion tilbage, indtil du opdaterer den sidste række og commit .
De rækker du SELECT ... FOR UPDATE ikke låst mod normal SELECT; de er stadig læsbare for andre transaktioner, der ikke bruger FOR UPDATE eller FOR SHARE .
Endnu bedre, prøv at omformulere det hele som en UPDATE ... FROM eller anden sæt-baseret operation, hvor du udfører alt arbejdet i en enkelt forespørgsel. Det vil generelt præstere enormt bedre end en SELECT ... FOR UPDATE efterfulgt af en strøm af UPDATE s.