场景是这样的
我们有两个应用程序 A 和 B,它们都运行在单独的数据库 (Oracle 9i) 事务中
应用程序 A - 将一些数据插入数据库,然后调用应用程序 B
应用程序 B - 将一些数据插入数据库,与 A 的数据相关(通过外键)。向应用程序 A 返回一个“ID”
应用程序 A - 使用 ID 插入更多数据,包括来自 B 的 ID
现在,因为这些是单独的事务,但都依赖于来自彼此事务的数据,所以我们需要在对每个应用程序的调用之间进行提交。如果出现任何问题,这当然会使回滚变得非常困难。
您将如何解决这个问题,同时对代码进行最少的重构。当然,这种这种情况是 SOA 世界中的常见问题吗?
- - - 更新 - - - -
我在 Oracle 9i 中找不到任何东西,但是 Oracle 11g 提供了 DBMS_XA ,这正是我所追求的。
最佳答案
您有三个选择:
请注意,如果应用程序 A 依赖于应用程序 B 的外键(您没有说明,因此这可能不是问题),您可能会遇到选项 3 的问题。 Oracle 的读取一致性可能会阻止这被允许,因为应用程序 A 的事务将在应用程序 B 之前开始。只是一个警告。
关于oracle - 两阶段提交/共享交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/89320/