我所处的场景是,我有两个不同的数据库,并且我想在两个数据库中提交不同的更改,这样如果其中一个提交失败,另一个也会失败。
如果我在“数据库 A”上有“事务 A”,在“数据库 B”上有“事务 B”,如何将这两个事务绑定(bind)在一起,以便两者都自动成功或失败。
我想不出办法来做到这一点。如果“事务 A”失败,回滚“事务 B”很容易,但如果“事务 B”在“事务 A”已经提交时失败,我就完蛋了。
我想知道是否有一种技术可以在特定的数据库产品中处理这个问题,或者如果有一个通用模式来处理这种情况甚至可以应用于任何事务系统(例如绑定(bind)数据库事务)就更好了使用事务消息队列。
最佳答案
您需要使用分布式事务管理器(在最简单的情况下,您的程序本身就可以充当)。
X/OpenXA
是管理分布式事务最广泛使用的标准,四大数据库都原生支持它。
关于database - 如何将两个交易绑定(bind)在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733146/