Wie stellen Sie sicher, es gibt keine race-condition in der MySQL-Datenbank, die beim Inkrementieren ein Feld?

Wie Sie verhindern, dass eine race-condition in der MySQL-Datenbank, wenn zwei verbindungen aktualisieren möchten, müssen Sie den gleichen Datensatz?

Beispielsweise Verbindung 1 erhöhen möchte "versucht" zu begegnen. Und die zweite Verbindung will, dasselbe zu tun. Beide verbindungen SELECT die "versucht" zählen, erhöhen Sie den Wert, und beide UPDATE "versucht" mit den erhöhten Wert. Plötzlich "versucht" nur "versucht+1" anstatt "versucht+2", da beide verbindungen habe die gleiche "versucht" und erhöht ihn um eins.

Wie dieses problem zu lösen?

  • Ich schlage vor, Sie suchen zum Thema: "Lock auf die Tabelle" Mysql-Funktion. Sperren einer Tabelle erlaubt, zur Lösung dieser Art von situation
InformationsquelleAutor bodacydo | 2010-03-02
Schreibe einen Kommentar