oracle中一个数据库表怎么把另一个数据库表中的最新信息添加过来,用DBLINK实现?求高手?
5个回答
2016-01-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
oracle中一个数据库表通过另一个数据表的数据同步最新数据采用dblink的方法:
1.首先创建一个dblink,可以访问远程数据库
2.在本地创建一个快照,映射远程数据表,当远程数据表有变化时,会反应到快照中.
3.由于快照类似于视图表,所以在本地为快照创建一个触发器,当快照有变化时,会触发相应事件.
4.在触发器中写同步数据的代码。
以下是触发器代码:
createorreplacetriggerTRI_test_user_AFR
afterinsertorupdateordeleteonsn_test_user
foreachrow
begin
if deleting then
deletefromtest_userwhereid=:old.id;
endif;
if inserting then
insertintotest_user(id,name,age)
values(:new.id,:new.name,:new.age);
endif;
if updating then
updatetest_usersetname=:new.name,age=:new.agewhereid=:old.id;
endif;
endTRI_test_user_AFR;
1.首先创建一个dblink,可以访问远程数据库
2.在本地创建一个快照,映射远程数据表,当远程数据表有变化时,会反应到快照中.
3.由于快照类似于视图表,所以在本地为快照创建一个触发器,当快照有变化时,会触发相应事件.
4.在触发器中写同步数据的代码。
以下是触发器代码:
createorreplacetriggerTRI_test_user_AFR
afterinsertorupdateordeleteonsn_test_user
foreachrow
begin
if deleting then
deletefromtest_userwhereid=:old.id;
endif;
if inserting then
insertintotest_user(id,name,age)
values(:new.id,:new.name,:new.age);
endif;
if updating then
updatetest_usersetname=:new.name,age=:new.agewhereid=:old.id;
endif;
endTRI_test_user_AFR;
2012-07-03
展开全部
如果是跨数据库了,那必须要用dblink了。然后不论跨数据库还是同数据库,可以在原始表(就是最先发生数据变化的那张表)上加触发器,然后同步所有的变化到新表去。
追问
最新发生数据变化的那张表不是我们自己的,不能去修改,只能够去更新它的最新数据,而且是那边数据新增了一条,我们这边的表也得马上添加进去?
追答
是的。触发器就是当他的表发生变化时,将数据变化同时同步到你自己的表里去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用触发器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
涉及到了跨库操作么?
追问
恩,是的,跨库同步更新数据!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过DBLINK 建视图或者同义词
1、首先在数据库上建立需要被查看数据库的dblink
2、建立相应对象
视图
create or replace view v_test as select * from user.table@dblink;
同义词
create or replace synonym syn_test
for user.table@dblink;
1、首先在数据库上建立需要被查看数据库的dblink
2、建立相应对象
视图
create or replace view v_test as select * from user.table@dblink;
同义词
create or replace synonym syn_test
for user.table@dblink;
追问
嗯,建立DBLINK明白了,就是不知道怎么检索到所连接数据表中有新增数据,又怎么把新增的数据马上加入我们自己的数据表。
追答
举个例子:
db1 table1
db2 table2
你想把db1 table1 中新增数据插入到db2 table2。
1、首先在db1上建立到 dblink1to2 指向 db2;
2、然后在db1上 通过dblink1to2 建立视图或者 同义词 view_db2_table2 指向 db2的table2
3、给db1 开放 db2 table2的插入或者修改权限。
4、在db1 table1 表上建立触发器,有插入操作的时候 在触发器里面将数据插入到
view_db2_table2
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询