SELECT ... FOR UPDATE
bloccherà il record con un blocco di scrittura (esclusivo) fino al completamento della transazione (commessa o rollback).
Per selezionare un record e assicurarti che non venga modificato finché non lo aggiorni, puoi avviare una transazione, selezionare il record utilizzando SELECT ... FOR UPDATE
, esegui una rapida elaborazione, aggiorna il record, quindi esegui il commit (o il rollback) della transazione.
Se usi SELECT ... FOR UPDATE
al di fuori di una transazione (autocommit ON), il blocco verrà comunque rilasciato immediatamente, quindi assicurati di utilizzare una transazione per mantenere il blocco.
Per le prestazioni, non mantenere le transazioni aperte per molto tempo, quindi l'aggiornamento dovrebbe essere eseguito immediatamente.