create table t_real_record_mid1
(
equipment_no          varchar2(200 char),
num_info              float             ,
record_date           date              ,
record_no             varchar2(200 char),
record_type_no        varchar2(200 char)
)                                  
此表中数据为实时插入,数据量不断的增长中数据插入时间为秒(record_date为数据的采集时间点)
create table t_real_record_mid2
(
equipment_no          varchar2(200 char),
num_info              float             ,
record_date           date              ,
record_no             varchar2(200 char),
record_type_no        varchar2(200 char)
)
本张表字段和上表字段一样,但只有最大时间点的数据(根据record_date区分)-------------------------
想做个触发器,当1表中有新数据插入的时候,就出发这个触发器,把1表中最大时间点的数据插入的2表中替换掉2表中原有数据,请问是否有可行的办法 ,来写一个触发器完成此项工作

解决方案 »

  1.   

    create or replace trigger t_mid1_tri
      after insert on t_real_record_mid1  
      for each row
    declare
       
    begin
      delete from t_real_record_mid2;
      insert into t_real_record_mid2 values(:new.equipment_no,:new.num_info,:new.record_date,:new.record_no,:new.record_type_no);
    end t_mid1_tri;
      

  2.   


    create or replace trigger t_mid1_tri
    before insert on t_real_record_mid1  
    for each row
    declare
      txdat date;  
    begin
      select max(record_date) into txdat from t_real_record_mid1;
      if txdat < :new.record_date  then
         delete from t_real_record_mid2;
         insert into t_real_record_mid2 values(:new.equipment_no,:new.num_info,:new.record_date,:new.record_no,:new.record_type_no);
      end if;
    exception when no_data_found then
      insert into t_real_record_mid2 values(:new.equipment_no,:new.num_info,:new.record_date,:new.record_no,:new.record_type_no);
    end t_mid1_tri;
      

  3.   


    create or replace trigger tri_upt_real_record_mid2 before 
    insert on t_real_record_mid1 for each row
    begin
    delete from t_real_record_mid2 where equipment_no=:new.equipment_no;
    insert into t_real_record_mid2 
    value(:new.equipment_no,:new.num_info,:new.record_date,:new.record_no,:new.record_type_no);
    end;
      

  4.   

    create or replace trigger tri_upt_real_record_mid2 before 
    insert on t_real_record_mid1 for each row
    begin
    delete from t_real_record_mid2 where equipment_no=:new.equipment_no;
    insert into t_real_record_mid2 
    value(:new.equipment_no,:new.num_info,:new.record_date,:new.record_no,:new.record_type_no);
    end;