Здравствуйте, ., Вы писали:
.>Dianbi wrote:
>> если оба селекта обернуть в транзакцию с "самым крутым" isolation level
>> никто ничего не удалит пока она не завершится
.>repeatable read гарантирует чтение одних и тех же данных с одинаковым результатом.
.>Он не блокирует всю базу, а только использованные таблицы, а чаще только использованные строки таблицы, так называемый rowlevel lock. Факт чтения из DocPart1 никоим образом не повлияет на результаты чтения из DocPart2! И совершенно неважно какой уровень транзакции.
>>> Не врубился ты. Вот объясняю на пальцах.
.>И ты не врубился.
Поэкспериментируй на досуге.
Да, но в нашем случае, поскольку при обновлении частей документа всегда идет обращение к базовой строке для увеличения номера версии, то транзакция, изменяющая запись, будет ждать, пока все не прочитается. Конечно при условии, что опреация изменения номера версии будет в одной транзакции с редактированием дочерних записей.