目前还不清楚我是否需要为每个使用SAVE TRANSACTION
的SP使用不同的保存点名称。在存储过程中使用SAVE TRANSACTION SavePointName
我能否总是使用例如SAVE TRANSACTION ProcedureSavePoint
和ROLLBACK TRANSACTION ProcedureSavePoint
即使更高级别的事务使用相同的保存点名称?
我的SP(S)的签名如下:
ALTER PROCEDURE [dbo].[usp_MyTask]()
AS
BEGIN
DECLARE @iReturn int = 0
DECLARE @tranCount int = @@TRANCOUNT;
IF @tranCount > 0
SAVE TRANSACTION ProcSavePoint;
ELSE
BEGIN TRAN
...
IF <some condition>
BEGIN
@iReturn = 1
GOTO Undo
END
...
IF @tranCount = 0
COMMIT TRAN
RETURN
Undo:
IF @tranCount = 0 -- transaction started in procedure. Roll back complete transaction.
ROLLBACK TRAN;
ELSE
IF XACT_STATE() <> -1 ROLLBACK TRANSACTION ProcSavePoint;
RETURN @iReturn
END
希望我的问题是清楚的。
你问是否相同保存点名称可以在另一个会话 –