如何在一个数据库的过程中连结另一个数据库!!!

时间:2022-12-11 17:40:21
想写一个过程,在更新本数据库的数据时(保存多个表),同时连结另一个数据库,并更新多表。如果有一个事务更新出错,将另一个数据库事务回退。


9 个解决方案

#1


通过创建数据库链路
create database link linkname
connect to user
identified by usrpwd 
using 'demona';//demona为用net8 easy config创建的连接字符串

#2


创建方法如楼上。
使用方法:如果用到其他数据库中的表,只需在此表后加上“@链路名”
eg:select * from table_name@linkname;

#3


更新远程数据库的数据呢?update ,insert 多表。
提交远程数据库的数据?commit 
远程数据库的结构同本地的结构是不相同的。
commit和rollback是同时提交或回退两个数据库吗?


请继续
谢谢

#4


一样的,update tbname@linkname set...;
insert into tbname@linkname values(...);

#5


那提交呢?
commit;是提交本地数据库
commit@linkname;是提交远程数据库
是这样吗?

#6


这我到没试过,你可以试一下

#7


那如何判断是否连结成功呢?
因为是两个数据库同时处理多表信息,如果数据不对或是有异常,将全部回滚。
原来是用PB的一个程序中加入两个事务实现的,现在要求oracle每天自动执行。想用JOB调用过程实现,但在过程中如何处理两事务,想请教大家!!!谢谢!!!


请继续
谢谢

#8


应该只需一个commit;试试看。
数据库中的事务好像针对的是不同的用户或者相同用户的不同会话,而用户不能显式的创建事务。

#9


一个rollback可以把两个数据库的数据回滚??

#1


通过创建数据库链路
create database link linkname
connect to user
identified by usrpwd 
using 'demona';//demona为用net8 easy config创建的连接字符串

#2


创建方法如楼上。
使用方法:如果用到其他数据库中的表,只需在此表后加上“@链路名”
eg:select * from table_name@linkname;

#3


更新远程数据库的数据呢?update ,insert 多表。
提交远程数据库的数据?commit 
远程数据库的结构同本地的结构是不相同的。
commit和rollback是同时提交或回退两个数据库吗?


请继续
谢谢

#4


一样的,update tbname@linkname set...;
insert into tbname@linkname values(...);

#5


那提交呢?
commit;是提交本地数据库
commit@linkname;是提交远程数据库
是这样吗?

#6


这我到没试过,你可以试一下

#7


那如何判断是否连结成功呢?
因为是两个数据库同时处理多表信息,如果数据不对或是有异常,将全部回滚。
原来是用PB的一个程序中加入两个事务实现的,现在要求oracle每天自动执行。想用JOB调用过程实现,但在过程中如何处理两事务,想请教大家!!!谢谢!!!


请继续
谢谢

#8


应该只需一个commit;试试看。
数据库中的事务好像针对的是不同的用户或者相同用户的不同会话,而用户不能显式的创建事务。

#9


一个rollback可以把两个数据库的数据回滚??