Semafor na tabele w bazie danych

0

Czy ktoś może mi podpowiedzieć jak (w najbardziej elegancki sposób) rozwiązać następujący problem?
Założenia: Aplikacja internetowa w ASP.NET MVC3
Co chcę osiągnąć: Zalogowany użytkownik próbuje edytować dokument, który jest edytowany przez innego użytkownika.
Dostaje komunikat o tym, że niestety dokument jest już edytowany przez inną osobę i nie można przejść dalej.
W jaki sposób nałożyć "bezpieczny" zamek. W taki sposób, aby (zakładając że użytkownik się wyłączy przeglądarkę zamiast się wylogować) zamek został zdjęty z edytowanego dokumentu.

0

stukaj co kilkanaście sekund ajaksem i zapisuj gdzieś czas ostatniego stuknięcia (oczywiście samo rozpoczęcie edycji również równa się stuknięciu). jeśli przez kilka cykli czasu nie nastąpiło stuknięcie, to można założyć, że nikt nie edytuje dokumentu. po prawidłowym zakończeniu edycji ustawiaj czas ostatniego stuknięcia na null albo gdzieś na trias czy jurę.
jeśli dwóch userów jednocześnie będzie chciało edytować, to i tak ten drugi (z punktu widzenia bazy danych) dostanie datę ostatniego stuknięcia => nie będzie mógł edytować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1