W>Примерно так, только называется это не "кэш", а блокировки. При начале редактирования в форме происходит попытка заблокировать объект в БД. Если он уже заблокирован, пользователь получает сообщение об ошибке.
W>Это т.н. пессимистические блокировки. бывают еще оптимистические, но для простоты пока не будем о них.
W>SQLite не поддерживает блокировки на уровне отдельных строк, только таблицы целиком. Придется либо реализовать их в приложении, либо сменить СУБД.
Допустим в sqlite были бы пессимистические блокировки на уровне рядов таблицы.
Понятно как это поможет в сценарии взяли объект, поменяли и возвращаем на то место откуда взяли.
Но как они помогут в согласованности данных в разных окнах?
Допустим есть окно со списком объектов, двойным кликом открывается окно просмотра
объекта, в котором есть кнопки "Удалить" и "Редактировать".
При нажатии "Редактировать" или "Удалить" логично взять блокировку,
но как другие "окна" которые работают с базой только на чтение получат
информацию о том что что-то поменялось и надо вытащить данные заново?
Понятно как это делать когда окна редактирования модальные, и после возвращения
управления можно перечитать базу, а если они как в моем случае немодальные?