Ich habe zwei Anwendungen, die im ungünstigsten Fall beide gleichzeitig einen Datensatz ändern.
Da eine Benutzerinteraktion aufgrund des Einsatzgebietes nicht immer möglich ist, will ich, dass die Änderungen von dem, der zuletzt die Transaktion beendet, übernommen werden.
Beispiel:
User A ändert Datensatz 52, speichert aber noch nicht.
User B ändert Datensatz 52, speichert aber noch nicht.
User A schließt seine Transaktion ab.
User B schließt seine Transaktion ab.
Die Änderungen von User B überschreiben die Änderungen von User A.
Leider bekomme ich die Umsetzung nicht hin. Sobald der user B seine Transaktion beenden will, wird die Exception an der stelle query1.post ausgelöst: "deadlock: conflict with a concurrent update". Das ist ja auch soweit ok, und ist die erwartete Reaktion der Datenbank. Ich kann das ganze auch in einer try except Anweisung abfangen, aber als Anfänger kriege ich einfach nicht raus, wie ich danach die aktuell geänderten Daten meines TQuerys in die Datenbank bekomme, ohne (!!) dass der Anwender B seine Änderungen erneut eingeben muss. Es soll also vollautomatisch ablaufen.
Ich habe excact für diesen Test das Interbase Tutial nachprogrammiert:
www.dsdt.info/tutorials/interbase/?page=9
Ich kann heute abend gerne noch den Quelltext nachreichen, habe nur derzeit keine Zugriff darauf.