Martin Speiser: Datensatz sperren

Beitrag lesen

Hi Markus,

Meine Frage: Gibt es eine Möglichkeit wie ich einen Datensatz nach dessen AUfruf für alle anderen Benutzer sperren kann.

So solltest du bei einer Web-Anwendung nicht arbeiten. Du kannst nicht vorhersehen, ob der Anwender den Datensatz wirklich ändern will, oder ob er nach der Anzeige einfach auf eine andere Seite geht, oder den Browser schließt. (Okay, das geht über onUnload, aber was wenn der Browser abschmiert?)

Besser ist die Benutzung sogenannter Concurrency-IDs. Dazu hat jede Tabelle in deiner Datenbank ein zusätzliches Feld, bei uns heißt es ConcurrencyID. Wird nun ein Datensatz gelesen, wird diese ConcurrencyID mit gelesen. Ändert der Anwender jetzt diesen Satz und speichert ihn, liest die Update-Routine jetzt zuerst den Satz nochmals aus der DB, vergleicht die ConcurrencyID aus der DB mit der im Speicher. Sind beide gleich, wird die ConcurrencyID um eins hochgezählt und gespeichert.
Sind beide unterschiedlich, wurde der Datensatz mittlerweile geändert, und das Speichern abgelehnt.

Gruß,
Martin