Выбор ответа Senior Транзакции и блокировки обновлено

Вложенные транзакции

Вопрос

Внутри транзакции вызывается процедура, которая сама делает НачатьТранзакцию() и при ошибке ОтменитьТранзакцию(). Что произойдёт с внешней транзакцией?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Вложенных транзакций нет: отмена внутри отменяет всю транзакцию. Платформа считает уровень вложенности, но реальная транзакция одна.

Варианты ответа

  1. Вложенных транзакций нет: отмена внутри отменяет всю транзакциюправильный ответ
  2. Отменятся только изменения, сделанные внутренней процедурой, а внешние останутся
  3. Внутренняя транзакция зафиксируется отдельно от внешней
  4. Внешняя транзакция автоматически перезапустится с начала

Разбор

Платформа считает уровень вложенности, но реальная транзакция одна. ОтменитьТранзакцию на любом уровне помечает всю транзакцию как отменённую, после этого операции с базой падают с ошибкой «в данной транзакции уже происходили ошибки». Частичного отката и автоматического перезапуска нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме