❓Рубрика: Вопросы на собеседовании #вопросынасобесах №93
На позицию: Программист 1С
Вопрос:
Есть ли в 1С понятие вложенных транзакций? Дайте развернутый ответ.
Ответ:
В 1С нет классических вложенных транзакций, как это реализовано в некоторых СУБД. При каждом вызове НачатьТранзакцию() внутри одной сессии просто увеличивается специальный внутренний счётчик.
По-настоящему стартует только одна транзакция на уровне базы данных.
Когда вызывается метод ЗафиксироватьТранзакцию(), платформа уменьшает этот счётчик — и только когда он снова станет равен нулю, происходит фактическое подтверждение изменений (commit).
Если где-то внутри вложенного блока вызвать ОтменитьТранзакцию(), откатятся все изменения, сделанные в рамках всей текущей транзакции, вне зависимости от того, на каком "уровне" вы это сделали. ❗️ Есть что добавить, пиши в комментариях.
Подпишись на канал
В этом посте были ссылки, но мы их удалили по правилам Сетки