Einzelnen Beitrag anzeigen

grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#1

Transactionhandling bei Interbase - suche die beste Methode

  Alt 3. Sep 2004, 09:49
Hallo!

Ich habe eine kleine Anwendung, die Interbase als Datenbank nutzt und die im Netz verwendet wird.

Das folgende Problem ist klar:
Zitat:
Benutzer A bearbeitet Satz 11. Er ändert Feld "xxx".
Gleichzeitig bearbeitet Benutzer B den gleichen Satz. Er ändert das Feld "zzz".
Einer der beiden wird nun die Änderungen des jeweils anderen überschreiben. Dies sollte aber verhindert werden. Um dies zu verhindern habe ich die folgenden Möglichkeiten gefunden:

1. Schreibschutzfeld
Jede Tabelle erhält eine neue Spalte "Schreibschutz". Sobald ein Nutzer in den Edit-Moduls wechselt, wird dieses Feld mit einem bestimmten Wert gefüllt. Dies verhindert, dass ein weiterer Benutzer diesen gerade gesperrten Satz ebenfalls bearbeitet.
Diese Methode hat den Nachteil, dass z.B. bei einem Programmabsturz der Datensatz zunächst gesperrt bleibt. Es müssen hier also gewisse Sicherheitsmechanismen eingebaut werden. So ganz überzeugt mich diese Möglichkeit nicht.

2. Abgleich
Sobald ein Nutzer in den Edit-Modus wechselt, werden die Daten (z.B. in einem Array) lokal zwischengespeichert. Vor dem Speichern (UPDATE) wird der komplette Datensatz neu angefordert und mit den lokalen Daten verglichen. Haben sich in der Zwischenzeit Änderungen ergeben, wird der Benutzer darauf hingewiesen. Er kann nun entscheiden, ob er seine Änderungen verwirft, die Änderungen des anderen Nutzers überschreibt oder sogar die beiden Änderungen kombiniert.
Auch diese Möglichkeit hat wieder gewisse Fallen. Außerdem erfordert Sie einen recht hohen Programmieraufwand

Gibt es vielleicht eine andere - elegantere - Möglichkeit um mein Problem, vor dem sehr viele stehen dürften, möglichst einfach zu lösen? Wie habt ihr das Problem gelöst?

Danke für die Antworten....
  Mit Zitat antworten Zitat