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

Modo corretto per selezionare e aggiornare SQL

Innanzitutto, al minimo dovresti fare un SELECT ... FOR UPDATE quindi blocchi le righe rispetto ad altri SELECT ... FOR [SHARE|UPDATE] accesso. Devi farlo all'interno di una transazione e conservare quella transazione finché non aggiorni l'ultima riga e commit .

Le righe che SELECT ... FOR UPDATE non bloccato contro il normale SELECT; sono ancora leggibili per altre transazioni che non utilizzano FOR UPDATE o FOR SHARE .

Meglio ancora, prova a riformulare il tutto come un UPDATE ... FROM o un'altra operazione basata su set in cui si esegue tutto il lavoro in una singola query. In genere funzionerà molto meglio di un SELECT ... FOR UPDATE seguito da un flusso di UPDATE s.