Вы должны использовать, как минимум, оптимистическую блокировку. Смотрите здесь:
Оптимистическая блокировка
По сути, это говорит о том, что вы проверяете значения всех полей во время обновления. Итак, вы говорите, например, предполагая, что при первом чтении записи 1 бар был равен 0:
UPDATE FOO SET BAR=1 WHERE ID=1 AND BAR=0
Идея в том, что если запись изменится, обновление завершится неудачно. Это решит вашу проблему.