Моя хранимая процедура выглядит следующим образом.
Я поддерживаю RowVersion в таблице A.
- Начинает транзакцию
- Чтение RowVersion из таблицы A rw1
- ...
- Некоторые расчеты
- ...
- Считать RowVersion из таблицы A как rw2
- Обновить некоторые таблицы, включая таблицу A
- IF (RW1 == RW2)
- COMMIT
- ELSE
- ROLLBACK
В настоящее время я использую READ COMMIT в качестве уровня изоляции, но при его обновлении Таблица A RowVersion также меняется.
Цель: когда два или более пользователей вошли в систему и одновременно нажали кнопку (которая выполнит этот SP), сначала один только выполняет SP и не позволяет другому выполнить