Hallo zusammen,
die Frage zielt zwar eher auf mysql selbst ab aber vielleicht hat jemand ja bereits erfahrung mit diesem Porblem.
Ich lese mit einem Client Daten aus einer DB aus,
der Client darf diese Daten auch ändern woraufhin sie in die DB geschrieben werden.
Problem :
Client 1 liest Datensatz a ein
Client 2 liest Datensatz a ein
Client 2 ändert Datensatz a und schreibt ihn in die DB
Client 1 ändert Datensatz a und schreibt ihn in die DB
Jetzt hätte Client 1 Daten überschrieben die er garnicht "kennt", da er vor dem Scheiben von Client 2 eingelesen hat.
Um das zu lösen wollte ich dem Datensatz eine CommitNummer geben die bei jedem schreibzugriff incrementiert wird.
Ziel wäre also ein SQL Statement zu schreiben das folgende Punkte realisiert.
Sperren des Datensates a für andere Zugfriffe
Lies CommitNummer ein und vergleiche diese
Update der Daten
CommitNummer++
Datensatz entsperren
Ist das möglich?
Das überprüfen und updaten könnte ja durch ein einfaches where commitNummer = ... gelöst werden allerdings das incrementieren der commitNummer wäre dann Zeitkritisch
die Frage zielt zwar eher auf mysql selbst ab aber vielleicht hat jemand ja bereits erfahrung mit diesem Porblem.
Ich lese mit einem Client Daten aus einer DB aus,
der Client darf diese Daten auch ändern woraufhin sie in die DB geschrieben werden.
Problem :
Client 1 liest Datensatz a ein
Client 2 liest Datensatz a ein
Client 2 ändert Datensatz a und schreibt ihn in die DB
Client 1 ändert Datensatz a und schreibt ihn in die DB
Jetzt hätte Client 1 Daten überschrieben die er garnicht "kennt", da er vor dem Scheiben von Client 2 eingelesen hat.
Um das zu lösen wollte ich dem Datensatz eine CommitNummer geben die bei jedem schreibzugriff incrementiert wird.
Ziel wäre also ein SQL Statement zu schreiben das folgende Punkte realisiert.
Sperren des Datensates a für andere Zugfriffe
Lies CommitNummer ein und vergleiche diese
Update der Daten
CommitNummer++
Datensatz entsperren
Ist das möglich?
Das überprüfen und updaten könnte ja durch ein einfaches where commitNummer = ... gelöst werden allerdings das incrementieren der commitNummer wäre dann Zeitkritisch