当前位置: 代码迷 >> Oracle开发 >> ,触发器无法数据同步的有关问题
  详细解决方案

,触发器无法数据同步的有关问题

热度:84   发布时间:2016-04-24 06:39:46.0
请教大家,触发器无法数据同步的问题
        系统会往A,B两个表同时插入数据,我的目标是把A,B两张表中新增加的数据内容,同步到C表。
        我先在A表上建了触发器,当A表中有新数据写入时,我需要关联A表和B表的某些字段,把A表和B表中的数据组成新的记录插入到C表。现在遇到的问题是,A表和B表关联后,数据写不到C表中。

        测试了一下:如果在触发器中把A,B表关联去掉,可以成功把A表中新增加的数据写入C表;加上A,B表的关联操作,C表中就没有新数据写入,但我手动关联A,B表执行SQL查询的时候,却能查到。
        由于用A表关联B表时,B表中关联到的记录也是新增加的,我担心A表的触发器被触发的那一时刻,B表数据还没生成,所以我在A表的触发器中,往C表写数据之前增加了延时处理dbms_lock.sleep(5),但C表中还是写不进数据去。
        实际环境中,A,B两表数据写入都比较频繁,而且往C表同步数据稍有延迟可以,但不能过大。     
        哪位朋友能帮忙看看哪里出了问题,或者给个其它的思路,谢谢!

------解决方案--------------------
为什么不把C表设计成一个视图,其中数据即表a和b关联后的结果。

这个不管a,b哪个有变化,c表中的结果总是正确的,还不用给表a和表b加入触发器,并考虑数据提交问题。

而且如你所言,a,b表写入频繁,更不应该给它们加触发器了。
------解决方案--------------------
引用:
为什么不把C表设计成一个视图,其中数据即表a和b关联后的结果。

这个不管a,b哪个有变化,c表中的结果总是正确的,还不用给表a和表b加入触发器,并考虑数据提交问题。

而且如你所言,a,b表写入频繁,更不应该给它们加触发器了。

同意1楼的看法.
你用延时处理,我觉得是没有找到问题的根本.怀疑还是你的触发器有问题,可否贴出代码和表结构?
  相关解决方案