【发布时间】:2016-03-21 12:46:57
【问题描述】:
我最近在一次采访中被问到一个问题。问题是:
我有两个不同的数据库,我需要更新两个数据库上的表。我们 想要数据一致性。我更新了第一个数据库中的表,然后在 更新第二个数据库出现错误。那么我能在这做什么 情况?
我想把所有的东西都放在一个事务中,如果我遇到异常,我坚持我可以回滚。但他们说,由于有 2 个不同的数据库,不可能将它们放在同一个事务中。我不确定我是否理解正确,但我找不到其他解决方案。
现在我要问的是什么。
1) 是否可以在一个事务中对两个不同的数据库进行两次查询?正如我在一些帖子中所读到的那样,这是可能的,但在他们所说的之后我无法确定。
2) 如果无法在事务中管理它们,我该如何回滚第一个数据库中的更改。
【问题讨论】:
-
在我看来,这是一个有点垃圾的问题。我可能会遵循......由于这个限制,在所有步骤都完成之前,我不会提交任何一个会话。出于这个原因,我将回滚 db1,因为 db2 不会由于更新语句中的失败而改变。
-
了解数据库链接、XA(分布式事务)。这是一个相当广泛的话题。
标签: database oracle distributed-database data-consistency