澄清我看到這個問題#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
我是新來的交易,與實例詳解會如此有益的。 謝謝:)