sql >> Database >  >> RDS >> Mysql

Hoe Mysql Race-voorwaarden op de juiste manier te vermijden?

Om dit te bereiken, moet u het record op de een of andere manier vergrendelen. Voeg een kolom LockedBy standaard toe aan 0.

Wanneer iemand op de knop drukt, voer dan een zoekopdracht uit die er ongeveer zo uitziet:

UPDATE-tabel SET LockedBy=WHERE LockedBy=0 en id=;

Controleer na de update de betreffende rijen (in php mysql_affected_rows). Als de waarde 0 is, betekent dit dat de zoekopdracht niets heeft bijgewerkt omdat de LockedBy-kolom niet 0 is en dus vergrendeld is door iemand anders.

Ik hoop dat dit helpt



  1. mysqld-service stopt eenmaal per dag op ec2-server

  2. MySQL IFNULL N.v.t. opbrengsten item kan niet worden gevonden in de verzameling Fout

  3. Een overzicht van het seriële pseudo-datatype voor PostgreSQL

  4. PostgreSQL - stel een standaard celwaarde in volgens een andere celwaarde