Выбор ответа Senior Транзакции и блокировки обновлено
Вложенные транзакции
Вопрос
Внутри транзакции вызывается процедура, которая сама делает НачатьТранзакцию() и при ошибке ОтменитьТранзакцию(). Что произойдёт с внешней транзакцией?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вложенных транзакций нет: отмена внутри отменяет всю транзакцию. Платформа считает уровень вложенности, но реальная транзакция одна.
Варианты ответа
- Вложенных транзакций нет: отмена внутри отменяет всю транзакциюправильный ответ
- Отменятся только изменения, сделанные внутренней процедурой, а внешние останутся
- Внутренняя транзакция зафиксируется отдельно от внешней
- Внешняя транзакция автоматически перезапустится с начала
Разбор
Платформа считает уровень вложенности, но реальная транзакция одна. ОтменитьТранзакцию на любом уровне помечает всю транзакцию как отменённую, после этого операции с базой падают с ошибкой «в данной транзакции уже происходили ошибки». Частичного отката и автоматического перезапуска нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.