我对SQL中的事务有些疑问。我执行下面的步骤。
如果连接1上的提交事务失败(回滚),那么连接2上的事务应该回滚。有可能吗?怎么做呢?
发布于 2013-08-08 06:01:04
是的,这是可以做到的,但您需要第三方充当事务协调器。这方面的标准协议称为两阶段提交 (2PC)。这通常是通过事务管理器作为协调器完成的。
这也可以进一步推广到两个以上的数据库。事实上,它甚至不必是数据库,因为这种方法通常应用于“事务性资源”。除了数据库之外,其他常见的事务资源是消息队列。通常的示例是在数据库中执行一些工作(例如:更新帐户余额),并在消息队列(ex:出站订单)上发送消息。
为此,数据源需要支持2PC,通常是通过XA协议。如何做到这一点取决于特定类型的数据源和编程语言(例如:对于Java,您将使用XADataSource)。
https://dba.stackexchange.com/questions/47762
相似问题