我有一个单一的连接,它在Oracle数据库的两个不同模式的对象上执行DML。我完成了涉及schema A
中的对象的事务,然后开始第二个事务以处理schema B
中的对象。如果在第二个事务中工作时发生任何错误,我想回滚这两个事务的更改。那可能吗?跨数据库中的多个模式的事务
回答
如果您想把对两种模式中所做的更改被提交或回滚在一起,你需要使用一个单一的交易。一旦你提交了第一笔交易,如果第二笔交易失败,你就不能再回滚它(可能的话,你可以使用闪回技术,但它更多地涉及方式)。但是,如果您在两个模式中使用单个事务处理您所做的工作,则会得到您希望所有更改都将以原子方式提交或回滚的行为。
设置你的Connection
所以它不会自动提交(其中它在默认情况下),例如:
conn.setAutoCommit(false);
然后你就可以对第一个模式运行DML,并使用相同的连接对象,运行针对第二个模式的DML。如果事情失败,滚一切恢复,e.g:
conn.rollback();
否则,如果一切完成,提交:
conn.commit();
GriffeyDog我们不能访问两个架构与单一的连接,但我们可以通过单一的交易实现它好的,如果我错了。 – BALASCJP 2012-08-16 20:35:08
好的,所以您听起来像是直接连接到两个模式中的每一个,并使用JDBC数据库连接。我建议设置一个单独的模式,您的应用程序可以使用该模式连接到Oracle数据库,并为您需要访问的任何数据库对象的现有两个模式授予适当的特权,以根据需要创建同义词。那么你将只需要一个JDBC连接。 – GriffeyDog 2012-08-17 14:19:57
- 1. 跨多个数据库的SQL事务
- 2. 适用于多个MySQL数据库模式的本地事务?
- 3. 跨不同数据库连接的多个SQL事务命令
- 4. 管理跨多个事务的SQL数据库连接
- 5. SQLite是否支持跨多个数据库的事务?
- 6. 多个数据库事务
- 7. 多个查询的数据库事务
- 8. 使用不同模式的多个数据库的Rake任务
- 9. ASP.NET 1.1跨越两个数据库的事务
- 10. 来自一个SP的跨数据库事务
- 11. 跨多个数据库的LINQ
- 12. 跨多个数据库的DataContext
- 13. 跨多个活动的Android数据库
- 14. 删除跨多个数据库的表
- 15. EF模型中的多个数据库模式第一个
- 16. 跨多个JVM的事务控制
- 17. 使用TransactionScope的一个事务中的多个数据库(多个DbContexts)。
- 18. 比较跨多个数据库服务器的ODBC设置
- 19. 存储库模式中的事务
- 20. Korma中有多个数据库的事务代码
- 21. 多服务层和数据库事务
- 22. 搜索多个模式或数据库
- 23. 使用多个数据库(DAO模式)
- 24. 数据库模式多个类别
- 25. JPA使用多个数据库模式
- 26. MVC跨多个模型的事务性PDO
- 27. 为数据库模式中的多个Id分配一个值
- 28. 用于在数据库之外实现事务的模式
- 29. 单个连接上的多个数据库事务
- 30. 从单个数据库中的多个模式中检索数据
您已经标记了这个问题甲骨文。您是否按照Oracle定义的术语使用术语“数据库”?如果是这样,就不可能有多个数据库的单一连接。或者,使用Oracle术语,您是指在同一数据库的两个不同模式中修改数据的进程? – 2012-08-16 19:14:41
我指的是同一个数据库的两种不同模式 – BALASCJP 2012-08-16 19:21:02
好吧,我想我编辑了你的问题来澄清你在说什么 - 请确保我已经正确理解了这个问题。 – 2012-08-16 19:25:32