Показать сообщение отдельно
Старый 20.02.2014, 22:55   #150  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Интересно, на что они надеются, вызывая здесь Retry?
Варианты
  • Есть обработка дубликатов в catch секции
  • Код вырван из контекста (приведен не полностью)
  • Действительно ерунда

Так как SERIALIZABLE уровень изоляции не используется, даже при использовании конструкций вида

X++:
ttsbegin;

if (exists())
{
    doSomethingBeforeUpdate();
    update();
}
else
{    
    doSomethingBeforeInsert();
    insert();
}

ttscommit;
в Create / Update сценарии в принципе не исключен вариант создания дубликата другим процесом во время doSomethingBeforeInsert(), так что в следуюший retry блок пойдет по "правильной" (update) ветке. Ну а если количество таких "промахов" превышает пороговое значение (в этом случае - 5) - наверное есть какие-то проблемы с логикой и пора признаться - "не шмогла". Как-то так
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: gl00mie (2).