SET XACT_ABORT ON在存储过程中使用有什么好处?
我想SET XACT_ABORT ON在事务中设置SQL Server 2008R2存储过程,所以在创建脚本中这样做:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET XACT_ABORT ON
GO
CREATE PROCEDURE MyProc
AS
BEGIN TRAN
...
IF @@ERROR <> 0
BEGIN
GOTO Done
END
...
IF @@ERROR <> 0
BEGIN
GOTO Done
END
COMMIT TRAN
Done:
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
GO
Run Code Online (Sandbox Code Playgroud)
成功创建后,我通过单击"修改"存储过程选项检查事务,并在生成的ALTER PROCEDURE脚本中看不到SET XACT_ABORT ON行:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE MyProc
AS
BEGIN TRAN
...
Run Code Online (Sandbox Code Playgroud)
我错在哪里或者诀窍是什么?如何正确定义SET …
t-sql sql-server stored-procedures transactions sql-server-2008