触发器同步表

若果只是某几张表, 建议使用物理视图吧。 因为已经存在了DB_LINK 在TB上建立个物理视图 步骤: 建立TA,TB的DB_LINK 在源数据库上,创建要同步表的快照日志 Create snapshot log on Ta.tablename 在目标数据库上创建快照(被同步(源)数据库服务必须启动) Create snapshot sn_user as select * from user@dblink_TA Alter snapshot sn_TA.tablename refresh fast Start with sysdate next sysdate+30/24*60*60; --oracle自动在当前时间立即进行第一次快速刷新,以后每隔30秒快速刷新一次 现在实现了TA某表到TB的,然后 将sn_TA.tablename建个触发,如 CREATE OR REPLACE TRIGGER BST114.TRI_USER_AFR AFTER DELETE OR INSERT OR UPDATE ON BST114.SN_user  REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW declare     tmp_id number(10):=-1;     flag number(3):=0; begin   dbms_output.put_line('begin');   if inserting then                for p in(select id from user where id=:new.id)       loop         tmp_id:=p.id;       end loop;              dbms_output.put_line(tmp_id | |'===------------');       if (tmp_id=-1) then           insert into user(id,name,age)           values(:new.id,:new.name,:new.age);       end if;   end if;      if updating then      dbms_output.put_line('updated');      for p in(select name,age from user where id=:old.id)      loop          if (p.name!=:new.name) or (p.age!=:new.age) then               update user set name=:new.name,age=:new.age where id=:old.id;          end if;      end loop;   end if;      if deleting then       dbms_output.put_line('deleted');       delete from user where id=:old.id;   end if;   dbms_output.put_line('end'); end TRI_USER_AFR; 这样就实现了TB中物理视图到 目的表的数据传输。
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值