Hallo zusammen,
ich hab eine wohl recht bekannte Problemstellung,
ein ClientProgramm ließt Daten aus der MySQL-DB und
änder zu einem späteren Zeitpunkt Daten.
Ich möchte verhindern das er dies tut sofern die Daten die sich zum Zeitpunkt der änderung in der DB befinden nicht mehr mit denen die er eingelesen hat übereinstimmen.
Beispiel :
Client 1 ließt Daten ein
Client 2 ließt dieselben Daten ein
Client 2 änder die Daten
Client 1 will die Daten ändern darf es aber nicht
Um das umzusetzen wollte ich eine CommitID in jeder Zeile speichern, die nach einem schreibzugriff incrementiert wird.
Jetzt mach ich mir allerdings gedanken darum wie ich das ganz sicher umsetzen kann.
Sicher in dem Sinn das nicht während 1 schreibt 2 schreiben will und die CommitID noch nicht erhöht wurde etc...
Daher wollte ich den Befehl in dieser Form schreiben
UPDATE blub SET a = .. ,b = .. commitid = eingelesenecommit+1 where commitid = eingelesenecommit and where id = ..
wäre das auf die Problemstellung bezogen sicher?
Wie würde das ganze aussehen wenn änderungen in mehreren Tabellen gemacht werden müssen?
ich hab eine wohl recht bekannte Problemstellung,
ein ClientProgramm ließt Daten aus der MySQL-DB und
änder zu einem späteren Zeitpunkt Daten.
Ich möchte verhindern das er dies tut sofern die Daten die sich zum Zeitpunkt der änderung in der DB befinden nicht mehr mit denen die er eingelesen hat übereinstimmen.
Beispiel :
Client 1 ließt Daten ein
Client 2 ließt dieselben Daten ein
Client 2 änder die Daten
Client 1 will die Daten ändern darf es aber nicht
Um das umzusetzen wollte ich eine CommitID in jeder Zeile speichern, die nach einem schreibzugriff incrementiert wird.
Jetzt mach ich mir allerdings gedanken darum wie ich das ganz sicher umsetzen kann.
Sicher in dem Sinn das nicht während 1 schreibt 2 schreiben will und die CommitID noch nicht erhöht wurde etc...
Daher wollte ich den Befehl in dieser Form schreiben
UPDATE blub SET a = .. ,b = .. commitid = eingelesenecommit+1 where commitid = eingelesenecommit and where id = ..
wäre das auf die Problemstellung bezogen sicher?
Wie würde das ganze aussehen wenn änderungen in mehreren Tabellen gemacht werden müssen?
Comment