@egecorp
В последнее время на собеседованиях встречаю вопросы, связанные со вложенными транзакциями в MS SQL.
BEGIN TRANSACTION
BEGIN TRANSACTION
-- Что-то делаем
COMMIT
ROLLBACK
Вопрос задают один и тот же, будет ли сохранено то, что во внутренней транзакции было подтверждено при коммите. Понятно логически, что не будет.
Но у меня появился вопрос — зачем в принципе нужна такая вложенность, где это может быть использовано?
Единственное, что идёт на ум — для отката при возникновении исключения (при XACT_ABORT = ON).
Решения вопроса 1
@d-stream
Собственно простой вариант: sp с транзакцией вызывает другую sp с транзакцией, которая может быть вызвана и сама — вот и «матрешка», если не озаботится например проверкой trancount.
Ну и архитектурно — за пределами вложенной транзакции изменения еще недоступны — иногда именно это и требуется.
Ну и архитектурно — за пределами вложенной транзакции изменения еще недоступны — иногда именно это и требуется.
1
комментарий
Ответы на вопрос 0