Лучше будет не отметка времени, которая ненадежна, а целочисленное поле версия , которое ваш клиентский код может использовать для обнаружения одновременных изменений в БД.
Это называется "оптимистичным"блокировка ", когда ваша транзакция не блокирует никакие ресурсы БД, пока не пришло время обновить БД.В этот момент он блокирует необходимые ресурсы БД (например, таблицы), читает версию из БД и проверяет, имеет ли она ожидаемое значение.Если да, это означает, что безопасно обновлять базу данных вместе с номером версии в БД.Если нет, это означает, что произошло одновременное обновление, и транзакция должна быть прервана.
Конечно, если у вас будет много прерываний, это означает, что вам понадобится «Пессимистическая блокировка», когда ваше приложение блокирует любые ресурсы длявся сделкаЕсли ваш драйвер БД не поддерживает это, вам понадобится другая общая блокировка, например, мьютекс.Этот подход снижает пропускную способность в большинстве случаев, поскольку одновременные транзакции должны ждать, пока одна транзакция не освободит заблокированные ресурсы.