Um Gottes willen, willst Du die Transaktion offen halten, während der Benutzer zur Mittagspause ist, sich zusäuft, ins Krankenhaus muss, dann zur Reha und schließlich in den Ruhestand? Dann ist die Transaktion bis zum Sankt Nimmerleinstag offen und blockiert alles und jeden.
Nee, nee.
Lieber so:
Code:
Daten laden.
Daten verändern lassen.
Daten speichern:
Transaktion starten
Prüfen, ob in der Zwischenzeit Daten verändert wurden und Konflikte lösen
Daten in die
DB
Transaktion Committen
Alternativ kannst Du dir eine Lock-Tabelle basteln, in der die zur Bearbeitung geladenen Objekte befinden. Vor dem Laden 'zum Bearbeiten' prüfst Du, ob der Datensatz schon in der Tabelle ist, wenn ja, sagst Du 'tut mir leid, der Datensatz ist gesperrt'.
Auch das hat Nachteile, wenn eben der andere zur Mittagspause geht und bla bla bla.
Ich bevorzuge die sanfte Methode der Konfliktlösung, die nur dann auftritt, wenn mehrere Leute die gleichen Daten eines Datensatzes ändern. Und wann passiert das denn? Bei schlecht organisierten Chaosabteilungen?
Delphi bietet übrigens so einen Mechanismus mit den TClientDatasets und dem 'Reconcile-Dialog'..