澄清我看到这个问题#1 Nested stored procedures containing TRY CATCH ROLLBACK pattern?需要对交易SQL SERVER
我需要澄清的交易模板什么GBN已经回答了我。 我无法评论,并在那里问。
CREATE PROCEDURE [Name]
AS
SET XACT_ABORT, NOCOUNT ON
DECLARE @starttrancount int
BEGIN TRY
SELECT @starttrancount = @@TRANCOUNT
IF @starttrancount = 0
BEGIN TRANSACTION
[...Perform work, call nested procedures...]
IF @starttrancount = 0
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0 AND @starttrancount = 0
ROLLBACK TRANSACTION
RAISERROR [rethrow caught error using @ErrorNumber, @ErrorMessage, etc]
END CATCH
GO
我的问题是!
为什么要使用?
SELECT @starttrancount = @@ TRANCOUNT,而不是直接使用@@ TRANCOUNT?
以及为什么要检查这个?
IF @starttrancount = 0 BEGIN TRANSACTION
IF @starttrancount = 0 COMMIT TRANSACTION
我是新来的交易,与实例详解会如此有益的。 谢谢:)