• Как правильно организовать конкурентный доступ с данным?

    LaRN
    @LaRN
    Senior Developer
    Мы аналогичную задачу решали так:
    Создали таблицу в которую заноситься объект при подъеме его на редактирование. Все остальные пользователи при попытке редактировать этот объект, получают сообщение, что пользователь "такой-то" его уже редактирует и форма поднимается в режиме только для чтения.
    Когда первый пользователь закрывает форму с объектом, из таблицы удаляется запись и объект сможет редактировать другой пользователь.

    Иногда случались сбои (например дисконнект) и пользователь открывший объект на редактирование не мог корректно освободить редактируемый объект. В этом случае, если объект есть в таблице редактируемых, но процесс с его spid и именем пользователя отсутствует на SQL сервере , принудительно удаляем объект из таблицы редактируемых.

    Без такого механизма периодически забивали несоответствия вида: "я поменял объект, сохранил, поднял его на просмотр, а он другой".
    Ответ написан
    1 комментарий