sql >> Databáze >  >> RDS >> Mysql

Jak se správně vyhnout Mysql Race Conditions

Abyste toho dosáhli, budete muset záznam nějak uzamknout. Přidejte sloupec LockedBy výchozí na 0.

Když někdo stiskne tlačítko, provede dotaz podobný tomuto:

AKTUALIZOVAT tabulku SET LockedBy=WHERE LockedBy=0 a id=;

Po aktualizaci ověřte dotčené řádky (v php mysql_affected_rows). Pokud je hodnota 0, znamená to, že dotaz nic neaktualizoval, protože sloupec LockedBy není 0 a je tedy uzamčen někým jiným.

Doufám, že to pomůže



  1. PHP skript pro protokolování nezpracovaných dat POST

  2. Algoritmus, který vyhledává související položky na základě běžných značek

  3. Jak funguje last_insert_rowid() v SQLite

  4. Jak získat čas z formátu DateTime v SQL?