2011-02-09 74 views
0

有表OLD和类似的NEW。我想在现有的表中插入一个触发器事件,对于每个新插入的行,这个事件会将新插入的行插入到NEW表中。触发的身体里面,我需要包括低于之前聚集在插入新老值查询:pl sql:从另一个表中插入数据的触发器

insert into NEW 
select (select a.id,a.name,a.address,b.jitter,a.packet,a.compo,b.rtd,a.dur from OLD a, 
     select address,packet,compo, avg(jitter) as jitter, avg(rtd) as rtd from OLD 
     group by address,packet,compo) b 
     where a.address=b.address and a.packet=b.packet and a.compo=b.compo; 

你可以纠正任何可能的错误或下面的语句暗示其他触发语法?

CREATE OR上OLD REPLACE TRIGGER插入 更新后的每一行 开始 MY上述 端选择查询;

回答

0

对于每行触发器,您无法查询表本身。如果你这样做,你会得到一个变异的表错误信息。 我建议只使用触发器来实现最基本的功能,例如发放ID号和非常基本的检查。 如果您确实使用触发器执行更复杂的任务,那么您可能会很容易地得到一个非常难以调试和维护的系统,因为出现在知识之外的各种操作都会非常困难。

看这个问题的另一种方法:getting rid of Insert trigger

0

Oracle流也可能是一个很好的解决方案。在应用处理程序中,您可以包含自己的自定义PL/SQL代码。此过程将在COMMIT之后调用,因此您可以避免变更表错误。

但是,Streams需要大量设置才能使其正常工作。对你正在做的事情可能是矫枉过正的。

相关问题