Zakładam, że Twoja UPDATE
sama instrukcja weryfikuje lastmodified
wartość, którą odczytałeś w swoim SELECT
oświadczenie, jak sugeruje dziewięciostronny.
Jeśli lastmodified
to DATE
, istnieje potencjalna sytuacja wyścigu, jeśli istnieje wiele aktualizacji tego samego wiersza w tej samej sekundzie od DATE
ma szczegółowość tylko do drugiego. Jeśli lastmodified
to TIMESTAMP
, z drugiej strony okno, w którym może wystąpić sytuacja wyścigu, jest znacznie bardziej ograniczone, ponieważ TIMESTAMP
będzie miał od 3 do 9 cyfr z dokładnością do sekundy (3 na większości maszyn z systemem Windows, 6 na większości maszyn z systemem Unix). Jest mało prawdopodobne, choć nie niemożliwe, że będziesz mieć dwie aktualizacje w tej samej milisekundzie lub nawet tej samej mikrosekundzie. Ale to nie jest nieomylne.
Możesz użyć wartości generowanej przez sekwencję zamiast daty ostatniej modyfikacji. To może zagwarantować, że nie stracisz aktualizacji, ponieważ sekwencja NOCYCLE nie zwróci dwukrotnie tej samej wartości. Ale jeśli pójdziesz tą ścieżką, albo stracisz korzyści informacyjne wynikające z posiadania daty ostatniej aktualizacji w każdym wierszu, albo przechowujesz kilka dodatkowych bajtów danych w każdym wierszu tabeli. Każdy z tych kompromisów może być tego wart w zależności od aplikacji lub może stworzyć więcej problemów niż rozwiązuje.