回滚整个过程(所有陈述)

joh*_*dad 5 sql-server

如何以某种方式编写该过程,以便每当其中的任何语句出错时我都可以ROLLBACK所有INSERT,UPDATE和DELETE语句.

请注意,我的程序可能会也可能不会按顺序列出语句.换句话说,我有一个INSERT语句,然后是一些IF逻辑,然后是一个select语句,然后是另一个INSERT,然后是UPDATE,然后是逻辑然后是DELETE语句等.

我只想在任何语句发生错误时ROLLBACK所有INSERT,UPDATE和DELETE语句.我找到了这段代码http://msdn.microsoft.com/en-us/library/ms181299.aspxhttp://en.allexperts.com/q/MS-SQL-Server-1801/Rollback-SP.htm

但他们没有回答我的问题.

Mar*_*ith 4

如果事务使用XACT_ABORT选项运行,则会自动发生。

set xact_abort on
begin tran

/*Your code*/


commit
Run Code Online (Sandbox Code Playgroud)

这是一个非常有趣的问题,讨论使用此方法与结构化错误处理。