Mysql
 sql >> Database >  >> RDS >> Mysql

Come evitare correttamente le condizioni di gara di Mysql

Per ottenere ciò, dovrai bloccare il record in qualche modo. Aggiungi una colonna BloccatoPer impostazione predefinita su 0.

Quando qualcuno preme il pulsante, esegui una query simile a questa:

UPDATE tabella SET LockedBy=WHERE LockedBy=0 e id=;

Dopo l'aggiornamento verifica le righe interessate (in php mysql_affected_rows). Se il valore è 0 significa che la query non ha aggiornato nulla perché la colonna LockedBy non è 0 e quindi è bloccata da qualcun altro.

Spero che questo aiuti