Andreas Korthaus: überschreiben von Änderungen vermeiden

Beitrag lesen

Hallo!

Ich habe eine Oberfläche gebastelt, mit der ein Benutzer Daten aus 3 Tabellen bearbeiten kann. Das funktioniert auch alles schön und gut, nur überlege ich jetzt, was denn passiert wenn 2 Leute gleichzeitig die Daten ändern, und so der eine die Änderungen des anderen überschreibt.
Da es ein paar mehr Daten sind habe ich das Änderungs-Formular auf 3 Seiten verteilt, am Anfang lese ich die Daten in die Session ein, dann werden die Daten in der Session geändert und am Ende wenn man "speichern" klickt werden die Daten aus der Session in die DB geschreiben. Das hatte ich mir so überlegt um
1. hier ca. 80-90% der DB-Zugriffe zu sparen, und
2. Änderungen rückgängig machen zu können

Aber was wenn jetzt 2 Benutzer dieselben Daten editieren wollen? Das darf nicht sein, also muss ich mir eine Art Locking-Mechanismus überlegen. Ein SQL-LOCK macht keinen Sinn da er nur für die Laufzeit des Scriptes auf dem Server Bestand hat. Alternativ könnte ich auch ein Flag in die Tabellen schreiben und das ggfs. verändern wenn die Daten gerade bearbeitet werrden, andere Benutzer erhalten dann eien Fehlermeldung. Nur hat das auch wieder einen Haken, denn wenn ein Benutzer jetzt die Daten editieren will, dann aber nichts mehr macht sind die Daten auf ewig gesperrt, also muss ich noch einen Timestamp hinzufügen, und sagen wir mal nach 10 Minuten Inaktivität das Flag zurücksetzen. Nur wie gesagt sind es ein paar mehr Daten und das Ändern könnte durchaus mal etwas dauern.

Irgendwie bin ich nicht so ganz glücklich mit dieser Version, habt Ihr vielleicht eine bessere Idee wie man sowas machen könnte?

Viele Grüße
Andreas