Цитата:
Сообщение от
kashperuk
Интересно, на что они надеются, вызывая здесь Retry?

Варианты
- Есть обработка дубликатов в catch секции
- Код вырван из контекста (приведен не полностью)
- Действительно ерунда
Так как SERIALIZABLE уровень изоляции не используется, даже при использовании конструкций вида
X++:
ttsbegin;
if (exists())
{
doSomethingBeforeUpdate();
update();
}
else
{
doSomethingBeforeInsert();
insert();
}
ttscommit;
в Create / Update сценарии в принципе не исключен вариант создания дубликата другим процесом во время doSomethingBeforeInsert(), так что в следуюший retry блок пойдет по "правильной" (update) ветке. Ну а если количество таких "промахов" превышает пороговое значение (в этом случае - 5) - наверное есть какие-то проблемы с логикой и пора признаться - "не шмогла". Как-то так