Wie Lucas vorgeschlagen hat, können Sie ein System im „Push“-Stil implementieren, das bei jeder Änderung einer Entität an die anderen verbundenen Benutzer „gepusht“ wird. Dies kann etwas komplex sein. Wenn wir mit einem Legacy-System arbeiten, handhaben wir dies über eine Spalte „Änderungsnummer“, aber es kann wirklich alles sein, was jedes Mal aktualisiert wird, wenn der Datensatz geändert wird.
Wenn ein Benutzer versucht, eine Entität zu ändern, fragen wir die Datenbank ab, um diese Entität mit einer Zeilensperre zu versehen, wobei die „Änderungsnummer“ die „Änderungsnummer“ widerspiegelt, die der Benutzer derzeit hat.
Wenn die Sperre erfolgreich ist, kann der Benutzer die Entität aktualisieren/löschen. Wenn sie fertig sind, werden die 'Save/Commit'- und 'Change Number'-Werte für die Entität erhöht.
Wenn sie die Zeilensperre nicht erhalten und die „Änderungsnummer“ dieselbe ist, zeigen wir eine Meldung an, dass die angeforderte Entität von einem anderen Benutzer verwendet wird. Wenn die "Änderungsnummer" anders war, heißt es in der Nachricht, dass sie ihre Ansicht aktualisieren müssen.