Die Einfachste und Beste (
imho) Möglichkeit ist, die Lock-Zeit so kurz wie möglich zu halten.
Das erfordert aber etwas mehr Aufwand bei der Programmierung:
Datensatz einlesen und nicht locken (Keine
DB-sensitiven Felder verwenden!).
Jetzigen DS-Inhalt merken.
Änderungen durchführen (Off-Line).
Den Datensatz aktuell nochmal holen und vergleichen, ob er sich geändert hat.
Hat sich geändert -> Daten können nicht geschrieben werden, da DS sich geändert hat.
Keine Änderung -> eigene Änderungen können gespeichert werden.
Du kannst natürlich auch den Datensatz zum Lesen sperren, solange er für einen Vorgang benötigt wird. Ob das eine gute Lösung ist, glaube ich nicht.