Jeg går ud fra, at din UPDATE
sætningen selv bekræfter lastmodified
værdi, som du læser i din SELECT
udtalelse som nisided antyder.
Hvis lastmodified
er en DATE
, så er der en potentiel løbstilstand, hvis der er flere opdateringer til den samme række i samme sekund siden en DATE
har kun granularitet til den anden. Hvis lastmodified
er et TIMESTAMP
, på den anden side er vinduet, hvori løbstilstanden kan forekomme, meget mere begrænset, da en TIMESTAMP
vil have mellem 3 og 9 cifre med sub-sekunds præcision (3 på de fleste Windows-maskiner, 6 på de fleste Unix-maskiner). Det er ret usandsynligt, men ikke umuligt, at du vil have to opdateringer på det samme millisekund eller endda det samme mikrosekund. Men det er ikke ufejlbarligt.
Du kan bruge en sekvensgenereret værdi i stedet for en sidste ændringsdato. Det kan garantere, at du ikke mister en opdatering, da en NOCYCLE-sekvens ikke returnerer den samme værdi to gange. Men hvis du går ned ad den vej, mister du enten informationsfordelen ved at have en sidste opdateringsdato på hver række, eller du gemmer et par ekstra bytes data i hver række i tabellen. En af disse afvejninger kan være det værd, afhængigt af din ansøgning, eller de kan skabe flere problemer, end de løser.