Цитата:
Сообщение от
NitroJunkie
Но в READ COMMITED блокировка же не держится в рамках всей транзакции. Или предполагается что обновление остатков всегда идет ровно одним запросом? И сквозного использования данных в рамках одной транзакции предполагается нет?
В READ COMMITED SNAPSHOT блокировок вообще нет. т.е. в общем случае предполагается что если у вас 2 сессии меняют одно и тоже, то у вас что-то не в порядке с бизнес процессами и одна из сессий при попытке сохранения записи получит сообщение о ошибке - "Запись изменена другим пользователем, обновите форму".
Есть еще много частных случаев - например в случае остатков, они не меняются при обработке документа, вместо этого создается лог изменений и по событию окончания транзакции этот лог записывается в основную таблицу.
Вот еще несколько частных случаев -
https://denistrunin.com/understanding-sql-blocking