首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨数据库中的多个模式的事务

跨数据库中的多个模式的事务
EN

Stack Overflow用户
提问于 2012-08-17 03:12:45
回答 2查看 2.5K关注 0票数 3

我只有一个连接,它对Oracle数据库的两个不同模式中的对象执行DML。我完成了一个涉及schema A中对象的事务,然后启动第二个事务来处理schema B中的对象。如果在处理第二个事务时发生任何错误,我希望回滚这两个事务的更改。这有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2012-08-17 03:28:32

如果希望同时提交或回滚对两个架构所做的更改,则需要使用单个事务。一旦你提交了第一个事务,如果第二个事务失败了,你就不能回滚它了(当然,你可以使用闪回技术,但是它会使的方式变得更加复杂)。但是,如果您对两个模式上的工作使用单个事务,那么您将获得所需的行为,即所有更改都将自动提交或回滚。

票数 2
EN

Stack Overflow用户

发布于 2012-08-17 04:26:02

设置您的Connection,使其不会自动提交(默认情况下会自动提交),例如:

代码语言:javascript
运行
复制
conn.setAutoCommit(false);

然后,您可以针对第一个架构运行DML,并使用相同的连接对象针对第二个架构运行DML。如果某些操作失败,请回滚所有内容,例如:

代码语言:javascript
运行
复制
conn.rollback();

否则,如果所有操作都成功,则提交:

代码语言:javascript
运行
复制
conn.commit(); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11993921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档