Ich erstelle eine Desktop-Anwendung, die die Daten in der Cloud beibehält. Ein Problem, das ich habe, besteht darin, ein Element in der Anwendung zu bearbeiten und es für eine Weile zu belassen, was dazu führt, dass die Daten veralten. Dies kann natürlich auch passieren, wenn 2 Personen gleichzeitig versuchen, dasselbe Objekt zu bearbeiten. Wenn sie ihre Bearbeitung abgeschlossen haben und die Daten speichern möchten, müsste ich entweder überschreiben, was derzeit in der Datenbank vorhanden ist, oder überprüfen, ob sie nach der letzten Änderung mit der Bearbeitung begonnen haben, und sie entweder zwingen, ihre Änderungen zu verwerfen, oder ihnen möglicherweise die Option zum Risiko geben Änderungen von jemand anderem überschreiben.
Ich habe darüber nachgedacht, Felder is_locked
und lock_timestamp
zur DB-Tabelle hinzuzufügen . Wenn ein Benutzer das Element bearbeitet, ändert sich die Zeile is_locked
in true und der Sperrzeitstempel wird auf die aktuelle Zeit gesetzt. Ich hätte dann etwas Zeit, für die die Sperre gehalten wird (zB 5 Minuten). Wenn eine andere Person versucht, das Objekt zu bearbeiten, wird eine Meldung angezeigt, dass das Objekt gesperrt ist und die Sperre automatisch abläuft. Wenn der Benutzer während der Bearbeitung die Sperre verlässt, läuft sie nach relativ kurzer Zeit automatisch ab. In diesem Fall wird der Benutzer gewarnt, dass die Sperre abgelaufen ist, und er muss die Bearbeitung nach dem Aktualisieren der Daten neu starten.
Wäre dies eine gute Methode, um das Überschreiben veralteter Daten zu verhindern? Ist es übertrieben (ich erwarte nicht, dass die Anwendung von mehr als ein paar Personen gleichzeitig auf einem einzigen Konto verwendet wird).
(Eine weitere Sorge, die ich habe, ist, dass 2 Personen ein Schloss für den gleichen Gegenstand erhalten. Ich glaube jedoch, dass dies eine Rennbedingung ist, mit der ich mich wohl fühle.)