Предполагам, че вашата UPDATE самият оператор проверява lastmodified стойност, която сте прочели във вашия SELECT твърдение, както предполага ninesided.
Ако lastmodified е DATE , тогава има потенциално състояние на състезание, ако има множество актуализации на един и същи ред в една и съща секунда след DATE има детайлност само към второто. Ако lastmodified е TIMESTAMP , от друга страна, прозорецът, в който може да възникне условието за състезание, е много по-ограничен, тъй като TIMESTAMP ще има между 3 и 9 цифри с точност под секунди (3 на повечето Windows машини, 6 на повечето Unix машини). Малко вероятно е, но не и невъзможно, да имате две актуализации в една и съща милисекунда или дори в една и съща микросекунда. Но не е безпогрешен.
Можете да използвате стойност, генерирана от последователност, вместо дата на последна промяна. Това може да гарантира, че няма да загубите актуализация, тъй като последователността на NOCYCLE няма да върне една и съща стойност два пъти. Но ако тръгнете по този път, вие или губите информационното предимство да имате последна актуална дата на всеки ред, или съхранявате няколко допълнителни байта данни във всеки ред на таблицата. Всеки от тези компромиси може да си струва в зависимост от вашето приложение или може да създаде повече проблеми, отколкото да ги разреши.