Einzelnen Beitrag anzeigen

mannewolff

Registriert seit: 21. Okt 2008
48 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: "Ich sperre, also bin ich"

  Alt 24. Nov 2009, 17:10
Na ja, Transaktionen helfen ja nicht bei dem Problem der Nebenläufigkeit. Ein Rollback der Datenbank ist außerdem keine Lösung für den Nutzer, nur für die Konsistenz der Datenbank. Optimistischer Lock ist da die Lösung. Es gibt ein Version-Feld in jeder Tabelle. Mit jedem Update wird das Version-Feld um 1 erhöht. Hast Du einen Datensatz mit der Version x dann ist das Update (pseudo code)

Lesen eines Objekts (einer Tabellenspalte)
merken der version in x
..
update tabelle set a=b where version = x;
on error
Benutzer informieren, dass sich Datensatz geändert hat
neuen Datensatz lesen
neuen Datensatz anzeigen

Das Update geht schief, wenn jemand zwischen Lesen und Schreiben etwas geändert hat, weil die Version der Datenbanktabelle dann nicht mehr x sondern >x ist.
  Mit Zitat antworten Zitat