Поддерживает ли SQL Server вложенные транзакции? - PullRequest
0 голосов
/ 04 июня 2019

Интересно, поддерживает ли SQL Server вложенные транзакции?

Я вижу похожие вопросы.

Также - Как узнать, что я нахожусь во вложенной транзакции?

Это может показаться странным вопросом .. но .. в SSMS я мог бы выполнить команду BEGIN TRANSACTION более одного раза случайно ... например .. Означает ли это, что мне нужно запустить COMMIT TRANSACTION более одного раза, чтобы завершить транзакцию?

Я думаю, что обычно следует избегать вложенных транзакций.

SELECT
    [Initial Assess -  Sweating], 
    COUNT(*) 
FROM
    Clinical.SAASCaseCards 
GROUP BY
    [Initial Assess -  Sweating]

BEGIN TRANSACTION;

UPDATE Clinical.SAASCaseCards 
SET [Initial Assess -  Sweating] = '1' 
WHERE [Initial Assess -  Sweating]= '01'

COMMIT TRANSACTION ;

Ответы [ 3 ]

1 голос
/ 04 июня 2019

Вы можете использовать глобальную переменную @@ TRANCOUNT, чтобы увидеть, как это работает.

Если вы запустите select @@TRANCOUNT и у вас нет транзакций, вы получите 0.

Каждый раз, когда запускается begin transaction, @@ TRANCOUNT увеличивается на 1. Каждый раз, когда commit (transaction) запускается, @@ TRANCOUNT уменьшается на 1. Если для этого @@ TRANCOUNT установлено значение 0, то транзакции (ы) действительно зафиксированы.

С другой стороны, rollback (transaction) установит @@ TRANCOUNT в 0 и откатит все изменения независимо от значения @@ TRANCOUNT в то время.

Итак, функциональное вложение отсутствует. Существует только этот счетчик, позволяющий различным модулям самостоятельно обрабатывать транзакции.

Я рекомендую статью Эрланда Соммерскога для дальнейшего чтения.

0 голосов
/ 04 июня 2019

Да, транзакция может быть вложенной.Но как только ваша внешняя транзакция завершится неудачно, ваша внутренняя транзакция также станет откатом.

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

0 голосов
/ 04 июня 2019

Насколько мне известно, транзакции не могут быть вложенными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...