У меня есть общая * CRUD система многопользовательского клиентского сервера c java, где каждый пользователь получает все элементы через SELECT
, добавляет новые элементы через INSERT
, удаляет существующие элементы через DELETE
и изменяет существующие элементы через UPDATE
.
Все таблицы содержат столбцы date_last_modified TIMESTAMPTZ
и user_last_modified INTEGER REFERENCES users(id)
.
Я хочу предотвратить ситуацию, когда сначала каждый пользователь SELECT
s все элементы, а затем несколько пользователей изменить аналогичный элемент, и каждое последующее ОБНОВЛЕНИЕ перезаписывает предыдущие данные.
Я пытаюсь создать запрос UPDATE
, который сравнивает значение date_last_modified
на клиенте и на сервере, и прерывает запрос, если значения не равны (имеется в виду, что кто-то уже изменил его).
Если существует другой подход для обработки ситуации, когда кэшированный элемент старше, чем тот, что в БД, тогда добро пожаловать.