我有三个oracle数据库,在不同的地方,需要操作这三个数据库。
我想写个事务操作,因为入一个数据库,其他二个库对应的其他表也要添加。
所以想写个一个事务,当某一个数据库操作失误,可能其他二个库就回滚。
|
|
事务解决不了问题吧。 又不是同一个数据库
|
5分 |
把语句写到一个事物里面不行吗?
|
10分 |
你这个要分布式事务嘛 类似sqlserver scope
|
|
不是同一个库,较难办了.
|
|
本身设计的就很奇葩.
就算你实现了这个事物
那么假如:
a,b,c,3个库
我更新完a,网络就异常了,这时更新b当然不成功,你想让a回滚,又如何通知a?
|
|
为什么很奇葩。。。。。
很多这种情况。 不同的系统都有自己的接口。。。你一个系统需要操作多个其他系统任何数据都需要事务(例如电网,移动,铁路里面信息中心会有N个系统N个数据库) 这个事务。。。不是一句ORACLE SQL SERVER里面事务类。 就以为搞定的。
是要自己写个单独的事务处理机制的类。。。去完成不同数据库的数据录入或者修改。
|
|
而且还有可能你的oracle,别人的是sql server 或者 sybase,有的库可以让你去直连。但是大多数又是web接口。
又不是单单一个 SQLTransaction、OracleTransaction类可以搞定的事情。
|
|
暂时这个分布式事务不知道怎么去处理
|
5分 |
这个问题不能用事物来处理
可以在数据库中建立连接来解决
A库中建立对B库的连接,然后在A库的相关表中使用触发器操作B库
|
5分 |
从数据库或者架构层面考虑比较靠谱一些。
|
5分 |
不是说多数据库的设计奇葩,而是说你想在客户端实现事务,这设计很奇葩
就算事务最终做出来了,也根本达不到你想要的效果
|
|
没有说客户端,是中间服务实现的。
|
|
从数据库或者架构层面考虑比较靠谱一些。
怎么去考虑啊,有没有相应的理论方面的文档等。
|
10分 |
从数据库或者架构层面考虑比较靠谱一些。
怎么去考虑啊,有没有相应的理论方面的文档等。
最简单地处理的话,你可以把(代码控制的)不同的数据库事务嵌套在一起,先确保执行“完毕”所有数据库表操作,然后一次性提交所有事务。由于这些提交“很接近、很短促”,基本上可以确保都会成功。
|
10分 |
如果这些数据库“是你家自己的”,你可以这样考虑一下。但是从SOA的角度,这其实往往首先是性能杀手(不但拖垮了网络系统,也会拖垮数据库本地应用),其次是毫无安全性,而且也不利于进行系统扩展。
通常是从业务流程设计上去解决这种问题。
如果你只能从“技术上”去理解,那么就无法解决这类问题了。如果死抠技术,可能就设计不出更高效率的系统。
|
5分 |
网上搜索 分布式事务,可实现多个数据库的事务控制,SQL Server亲测没有问题,ORACLE需要安装另外一个支持分布式事务的程序后通过Windows 服务也可以实现。
|
|
1.分布式事务;
2.设计是否可以再考虑下。
|
5分 |
从数据库或者架构层面考虑比较靠谱一些。
怎么去考虑啊,有没有相应的理论方面的文档等。
分布式事务可以考虑,服务端提供insert和delete两个服务,然后拼一个“大”的事务。
如果你的应用很简单,几个oracle都是自家的,是否可以考虑用dblink只操作一个库,其他几个都是“映射”过来的。
|
|
放在一个Pro里面用DBLINK处理,感觉这个方法不错
|
|
TransactionScope类可以实现你的需求
|