Re[18]: Блокировки в бизнес-слое
От: Poul_Ko Казахстан  
Дата: 29.09.17 02:47
Оценка:
Здравствуйте, ·, Вы писали:
·>Ну объяснил же уже вроде. Не просто проверка, а условная атомарная операция. Псевдокод:
Agreement — очевидно это договор.
·>SELECT Version, startDate...etc FROM Agreement WHERE id=1;
·>var CurrentVersion = Version;
·>// проверяем... долго и упорно
·>checkIt(startDate);
·>...
·>checkIt(etc);

·>// фиксируем
// Почему  здесь Agreement? Подтверждаем-то мы заказ!
·>UPDATE Agreement SET Confirmed='YES' WHERE id=1 AND Version=CurrentVersion;
·>if(updatedRecords==0) rollback;// упс - облом, придётся начать сначала.


·>Ну и модифицирующие операции (все или как минимум те, которые могут влиять на проверки) должны изменять версию:

Это классика оптимистической блокировки, но работает она в пределах одного агрегата, а у нас здесь два (в реальности конечно больше)...
Brainbench transcript #6370594
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.