如何解决强制回滚到整个脚本包括存储过程
我有一个包含许多存储过程的复杂脚本,我需要在所有情况下进行回滚。
BEGIN TRANSACTION;
INSERT INTO Table1 VALUES(1);
INSERT INTO Table2 VALUES(2);
EXEC storedprocedure1
EXEC storedprocedure2
....
ROLLBACK;
我没有检查里面的所有存储过程(如果有其他事务)。
我问是否有办法通过存储过程中其他事务的存在来独立回滚整个脚本(包括存储过程)。
谢谢!
解决方法
(假设 SQL Server)
无需检查那些存储过程。
ROLLBACK
会一直回滚到最外层的事务,包括回滚 storeprocedure1
和 storeprocedure2
内的所有事务,即使这些嵌套事务是在这些 procs 内提交的.
选择 @@TRANCOUNT
将显示任何 ROLLBACK
会将会话的事务计数设置回 0。
因此,如果您回滚外部事务,任何可能期望提交这些嵌套事务的人都是 going to be disappointed。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。