Datenbankeintrag zum Bearbeiten sperren
Ich habe eine SQL Server 2008-Datenbank und ein asp.net-Frontend.
Ich möchte eine Sperre implementieren, wenn ein Benutzer gerade einen Datensatz bearbeitet, aber nicht sicher ist, welcher Ansatz der beste ist.
Meine Idee ist eineisLocked
Die Spalte für die Datensätze wird auf true gesetzt, wenn ein Benutzer diesen Datensatz abruft. Dies bedeutet, dass alle anderen Benutzer nur Lesezugriff haben, bis der erste Benutzer die Bearbeitung abgeschlossen hat.
Was ist jedoch, wenn in der Sitzung eine Zeitüberschreitung auftritt und der Datensatz nie gespeichert / aktualisiert wird? Der Datensatz bleibt beiisLocked = true
, was bedeutet, dass andere es nicht bearbeiten können, oder?
Wie kann ich eine Art Session-Timeout implementieren und habenisLocked
wird automatisch auf false gesetzt, wenn die Sitzung abgelaufen ist (oder nach einem vordefinierten Zeitraum)
Sollte dies auf der asp.net-Seite oder der SQL-Seite implementiert werden?