Předpokládám, že vaše UPDATE
samotný příkaz ověřuje lastmodified
hodnotu, kterou si přečtete ve svém SELECT
prohlášení, jak navrhuje devítistranný.
Pokud lastmodified
je DATE
, pak existuje potenciální spor, pokud je od DATE
více aktualizací stejného řádku ve stejnou sekundu má pouze granularitu na druhou. Pokud lastmodified
je TIMESTAMP
, na druhou stranu, okno, ve kterém může dojít ke sporu, je mnohem omezenější, protože TIMESTAMP
bude mít 3 až 9 číslic s přesností pod sekundu (3 na většině počítačů Windows, 6 na většině počítačů Unix). Je docela nepravděpodobné, i když ne nemožné, že byste měli dvě aktualizace ve stejnou milisekundu nebo dokonce stejnou mikrosekundu. Ale není to neomylné.
Místo data poslední změny můžete použít hodnotu vygenerovanou sekvencí. To může zaručit, že neztratíte aktualizaci, protože sekvence NOCYCLE nevrátí stejnou hodnotu dvakrát. Pokud se však vydáte touto cestou, buď ztratíte informační výhodu, že datum poslední aktualizace bude na každém řádku, nebo uložíte pár bajtů dat navíc v každém řádku tabulky. Každý z těchto kompromisů může stát za to v závislosti na vaší aplikaci, nebo může způsobit více problémů, než vyřeší.