Ten eerste, op minimaal je zou een SELECT ... FOR UPDATE
moeten doen dus je vergrendelt de rijen tegen andere SELECT ... FOR [SHARE|UPDATE]
toegang. U moet dit binnen een transactie doen en die transactie vasthouden totdat u de laatste rij bijwerkt en commit
.
De rijen die u SELECT ... FOR UPDATE
niet vergrendeld tegen normaal SELECT
; ze zijn nog steeds leesbaar voor andere transacties die geen gebruik maken van FOR UPDATE
of FOR SHARE
.
Beter nog, probeer het hele ding te herformuleren als een UPDATE ... FROM
of een andere set-gebaseerde bewerking waarbij u al het werk in één query doet. Het zal over het algemeen veel beter presteren dan een SELECT ... FOR UPDATE
gevolgd door een stroom van UPDATE
v.