TSQL Try / Catch внутри транзакции или наоборот?

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

Это краткое изложение сценария.

BEGIN TRANSACTION SCHEDULEDELETE
    BEGIN TRY
        DELETE   -- delete commands full SQL cut out
        DELETE   -- delete commands full SQL cut out
        DELETE   -- delete commands full SQL cut out
        PRINT 'X rows deleted. Please commit or rollback.' --calculation cut out.
    END TRY
    BEGIN CATCH 
        SELECT
            ERROR_NUMBER() AS ErrorNumber,
            ERROR_SEVERITY() AS ErrorSeverity,
            ERROR_STATE() AS ErrorState,
            ERROR_PROCEDURE() AS ErrorProcedure,
            ERROR_LINE() AS ErrorLine,
            ERROR_MESSAGE() AS ErrorMessage

            ROLLBACK TRANSACTION SCHEDULEDELETE
            PRINT 'Error detected, all changes reversed.'
    END CATCH

--COMMIT TRANSACTION SCHEDULEDELETE --Run this if count correct.

--ROLLBACK TRANSACTION SCHEDULEDELETE --Run this if there is any doubt whatsoever.

Это моя первая запись транзакции. Правильно ли / лучше, чтобы блок TRY / CATCH был внутри транзакции, или транзакция должна быть внутри блока TRY?

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

Ответы на вопрос(3)

Ваш ответ на вопрос