Показать сообщение отдельно
Старый 09.10.2019, 00:52   #39  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от NitroJunkie Посмотреть сообщение
Ошибся, имел ввиду на самом деле REPEATABLE READ (в MS SQL - это SNAPSHOT, ну и в Oracle SERIALIZABLE это по сути REPEATABLE READ). Тогда блокировок не будет, а версии записей проверит сам MS SQL.
REPEATABLE READ вполне так даст вам блокировки в SQL Server
https://docs.microsoft.com/en-us/sql...ql-server-2017
Цитата:
REPEATABLE READ
Specifies that statements cannot read data that has been modified but not yet committed by other transactions and that no other transactions can modify data that has been read by the current transaction until the current transaction completes.
Еще раз - мы хотим получить систему без блокировок в общем случае. На чтении это дает только READ_COMMITTED_SNAPSHOT(ON). Но он будет давать блокировки при записи(что как-бы тоже плохо). Поэтому запись сделали в 2 этапа, что потребовало добавление в каждую таблицу столбца RecVersion. (Ну и плюс RecId - уникальный идентификатор записи)
За это сообщение автора поблагодарили: Logger (3).