Huhu.
So schwer ist das ganze m.E.n. nicht.
Hierzu habe ich zwei Ansatzpunkte:
1. Falls es Dir möglich ist, nutze einfach eine weitere Tabelle, in welcher Du einträgst, wenn jemand einen Datensatz öffnet. (id mit einem Feld -> Geöffnet von UserXXX). Ein weiteres Feld könnte nutzbar sein, wenn sich jemand an das Bearbeiten des Datensatzes macht. Sollte nun jemand anderes den Datensatz bearbeiten wollen, müsste ja das Flag gesetzt werden. Aber eine Query auf die id ergibt dan, dass jemand anderes schon bearbeitet. Somit könntes Du hier weitermachen mit Meldungen, evtl. sogar den Benutzer angeben, damit eine schnelle interne Rückfrage erfolgen kann.
2. In jedem Datensatz gibt es ein Feld, in dem ein Schreibschutz gesetzt werden kann. Sobald jemand den Datensatz öffnet, wird das Feld gesetzt (ein Boolean könnte reichen), wenn jemand anderes den Datensatz öffnen möchte, wahlweise dann nur als Read-Only oder eben gar nicht. Wahlweise auch mit Meldung, wer den Datensatz geöffnet hat.
Bei der zweiten Variante ist es nun aber blöderweise so, dass, falls das Programm oder der PC abstürzt, das Feld nicht wieder zurück gesetzt wird. Für den Fall hätte ich noch eine Idee, dass man den PC, der den Datensatz öffnet, mit einem eindeutigen UID in einem Feld hinterlegt. Diese UID muss aber immer für jeden PC gleich bleiben. Ein Ansatz wäre die Mac-Adresse. Nun ist es aber schwierig, zu testen, ob der bestimmte PC noch erreichbar ist. Per Mac-Adresse ist es machbar, per willkürlicher UID nicht mehr so einfach. Ein Clean-Up der Tabelle müsste also irgendwie erfolgen. Oder aber der PC, der das Programm neu öffnet, löscht alle Einträge seiner eigenen UID in der Tabelle. So zu sagen ein aktives sel-Clean-Up.
Ich selbst hatte das auch schon so ähnlich im Einsatz, jedoch mit einem Hash (16-Stellig). Somit benötigte ich keinen Datenbankserver.
Nur Ideen.