如何以某种方式编写过程,以便只要其中的ANY语句有错误,就可以回滚所有INSERT,UPDATE和DELETE语句。

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

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

但是他们没有回答我的问题。

最佳答案

如果使用XACT_ABORT选项运行事务,则此操作将自动发生。

set xact_abort on
begin tran

/*Your code*/


commit

这是一个interesting question讨论使用此vs结构化错误处理。

关于sql-server - 回滚整个过程(所有语句),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3430596/

10-17 01:21