日期:2014-05-17  浏览次数:20919 次

2个数据库结构一样的表数据同步,用触发器做的,记录数不一样
记录数要差几条呢 触发器的bug吗?   触发器生效一天之后发现两张表记录数是一样的哦

触发器是这种模式

create or replace trigger mob.record_content_modify
after insert or update or delete
ON mob.record_content FOR EACH ROW

BEGIN
if  INSERTING then
  INSERT INTO nrecord_content@wydk //wydk 为 dblink
  (
  COL1        ,
  COL2       ,
  COL3        ,
 ................
  COL25    ,
  COL40 )
  VALUES
  (:new.COL1        ,
  :new.COL2       ,
  :new.COL3        ,
................
  :new.COL25    ,
  :new.COL40
  ) ;

elsif updating then
  update record_content@wydk
  set
  COL1  = :new.COL1      ,
  COL2  = :new.COL2       ,
  COL3   = :new.COL3       ,
  COL25   = :new.COL25    ,
  COL40 = :new.COL40
  where ID = :old.ID;
elsif  DELETING then
  delete from record_content@wydk
  where ID = :old.ID;

end if ;
  END;

WYHIS这个dblink是有权限  增删查改wydk库record_content表权限的  

分析道这 水平有限 弄不起走了 各位高手帮我瞧瞧 谢谢了

------解决方案--------------------
minus两表看看,差的记录的数据是怎样的,是否符合insert触发器条件?

表的插入繁忙程度如何?

触发器里没有异常处理,那么应用程序是否处理异常了?
------解决方案--------------------
没有处理delete的情况 
------解决方案--------------------
我也遇到了和楼主一样的需求。。。。建了和用户数据库一样的表,然后把用户表中的数据同步过来,一开始也是考虑到用触发器,不过就怕数据量大,触发器的效果不理想,求各位大仙指导指导!!!用的是oracle数据库。
------解决方案--------------------
建议使用物化视图 + DB LINK
------解决方案--------------------
建议不要用触发器,这个东西很难控制,总是莫名其妙的出一些问题,在我们的项目中都不用触发器了。
------解决方案--------------------
引用:
定时倒数据嘛?



物化视图:  Materialized view
本身就是一个实体化的是图标,占用数据库的存储空间,可以是远程数据库的本地备份,也可以是基础表的查询统计汇总。

使用物化视图+Dblink的方式来进行数据同步,这个方式比较可靠,而且可以选择是 定时同步或者给予ROWID或者主键的变化进行同步,比较可靠,灵活.

相关使用google:基于远程数据库表,建立本地数据库的物化视图