Как правильно реализовать систему версий для записей таблиц?

Рейтинг: 0Ответов: 0Опубликовано: 14.03.2023

Есть таблица fileState в БД. С полями fileId INT, version SMALLINT UNSIGNED.

По крону срабатывает скрипт, который сравнивает версию файла во время последней проверки и текущую версию. Если версия поменялась, стала больше, например, то происходит его дальнейшая обработка, иначе, пропускаем этот файл.

Сейчас во время обновления файла вызывается следующий запрос:

UPDATE fileState SET version = IF(version = 255, 0, version+1) WHERE fileId = $fileId;

Однако, может возникнуть ситуация, когда крон не срабатывал и последняя его версия - 0, а файл обновлялся и после версии 255 стал 0, что при запуске приведёт к пропуску файла.

Как можно этого избежать? Какой тип данных для версий использовать менее затратно и по времени и по весу? Может FLOAT и хранить версии так: 0.0, ..., 0.9, 0.11, ..., 0.59? (Пропуская десятки 9 -> 11, 99 -> 111)

Ответы

Ответов пока нет.