回滚先前提交的事务

4
在我正在开发的服务中,我需要提供一个双重操作:
1. 所做的请求应该在数据库中注册(使用Register()方法); 2. 请求应该发送到外部webservice进行进一步处理(使用Dispatch()方法)。
考虑到我不能交换操作的顺序,如果第二个操作出现问题,我希望能够“回滚”第一个操作,以便不会将无效记录插入到BD中。问题在于,当然,我正在Register方法中提交事务。如果Dispatch方法出现任何问题,有没有办法从内部回滚它?
编辑:所有事务都是从.NET端管理的。

2
你需要使用两阶段提交协议。这基本上就是MSDTC所做的事情,而且这是你最好的选择:使用分布式事务协调器。但我认为重新思考你的完整事务策略会更好。尝试设计系统,使其不需要分布式原子性。 - Steven
1个回答

2

在这种情况下,数据库无法帮助您。您必须创建补偿事务,使用相互撤销的操作对来替代关系型数据库中管理事务所需的所有工作和逻辑。


谢谢!我忘了提到,所有的交易都是从.NET端管理的。 - DotNetStudent
1
不会改变我的答案 - 你必须全部完成。 - duffymo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接