有没有办法在 SQL Server 2012 存储过程内回滚?

有没有办法在 SQL Server 2012 存储过程内回滚?

在存储过程中,调用了多条“更新”sql语句。如果其中任何一条失败,我想回滚同一存储过程中先前执行的更新语句。有办法吗?

答案1

你可以将整个内容包装在 begin tran/end tran 中。引用自微软

BEGIN TRANSACTION 表示连接所引用的数据在逻辑和物理上一致的点。如果遇到错误,则可以回滚在 BEGIN TRANSACTION 之后进行的所有数据修改,以将数据返回到此已知的一致性状态。每个事务持续到它完成且没有错误并且发出 COMMIT TRANSACTION 以使修改成为数据库的永久部分,或者遇到错误并且使用 ROLLBACK TRANSACTION 语句删除所有修改为止。

为了回应您的评论,将其与嵌套试着抓可能对你有用。

相关内容