
Bei der Verwendung und Veränderung von Datensätzen im Mehrbenutzerbetrieb sind Datensatzsperren unabdingbar.
In diesem Artikel möchte ich erläutern, welche Sperrmodi zur Verfügung stehen und unter welchen Bedingungen ein Datensatz gesperrt beziehungsweise nicht gesperrt werden kann.
Mit Sperren können Schreibkonflikte im Mehrbenutzerbetrieb vermieden werden. Ein Datensatz muss zunächst gesperrt werden, damit er geändert werden kann. Für die Dauer der Sperre kann kein anderer Benutzer den Datensatz sperren.
Datensatzsperren können mit den folgenden Funktionen gesetzt oder entfernt werden:
RecRead()– Datensatz lesenRecLink()– verknüpften Datensatz lesenRecInsert()– Datensatz einfügenRecReplace()– Datensatz ersetzen
Eine Sperre kann beim Lesen eines Datensatzes nur gesetzt werden, wenn er über einen eindeutigen Schlüssel oder die Datensatz-ID gelesen wurde.
Sperrmodi
Ein Datensatz ist entweder
- nicht gesperrt,
- vom eigenen Benutzer gesperrt,
- von einem anderen Benutzer gesperrt oder
- von mehreren Benutzern gemeinsam gesperrt.
Sperroptionen
_RecLockMit dieser Option wird eine Sperre angefordert. Dies ist erfolgreich, wenn der Datensatz bisher nicht, oder nur vom eigenen Benutzer gesperrt ist. Ist der Datensatz von einem anderen Benutzer gesperrt, wird der Fehlercode
_rLockedzurückgegeben._RecSingleLockDiese Option fordert eine Sperre an, prüft jedoch vorher, ob der Datensatz durch irgendeinen Benutzer gesperrt ist. Ist dies der Fall, wird der Fehlercode
_rLockedzurückgegeben. Der Rückgabewert_rOKkommt nur zurück, wenn der Datensatz nicht gesperrt ist.
Ausnahme: wird diese Option beiRecReplace()angegeben und der Datensatz ist zuvor gesperrt, wird ebenfalls_rOKzurückgegeben._RecSharedLockDie Option
_RecSharedLockfordert eine gemeinsame Sperre an. Ist der Datensatz noch nicht, vom eigenen Benutzer einfach, oder von einem bzw. mehreren Benutzern gemeinsam gesperrt, ist das Resultat_rOK. Ist der Datensatz durch einen Benutzer gesperrt, kommt der Fehlercode_rLockedzurück._RecForceLockMit der Sperroption
_RecForceLockwird eine Sperre erzwungen. Alle bestehenden Sperren von anderen Benutzern werden aufgehoben.Diese Option sollte jedoch nur in Ausnahmefällen verwendet werden, da die Änderungen der anderen Benutzer verworfen werden.
_RecUnlockMit dieser Option wird der gesperrte Datensatz entsperrt. Bei gemeinsam gesperrten Datensätzen wird nur die eigene Sperre aufgehoben. Das Resultat ist immer
_rOK, unabhängig davon, ob der Datensatz durch den eigenen Benutzer gesperrt ist, oder nicht.