oracle 触发器

235 阅读1分钟

触发器的时机,有before和after。二者使用场合肯定不一样。我想到的是:

1、before:插入或修改前,一般是针对本表操作做一些补充和完善
2、after:插入或修改后,可以针对关联表做一些操作

举个栗子:

create or replace trigger trg_alert_level
  before insert on hy_data_handle_record  
  for each row
declare
  -- local variables here
begin

    select max(s_level) into :NEW.ALERT_LEVEL from(
      select :NEW.l_ph s_level from dual
             union all
      select :NEW.l_do s_level from dual
             union all
      select :NEW.l_cod s_level from dual
            union all
      select :NEW.l_andan s_level from dual
            union all
      select :NEW.l_wujidan s_level from dual
            union all
      select :NEW.l_linsuanyan s_level from dual
            union all
      select :NEW.l_zonglin s_level from dual
            union all
      select :NEW.l_vedio s_level from dual      
    );

end trg_alert_level;
/

上面这个触发器,就是在记录插入前,从该记录的一系列字段中找出一个最大值,付给字段alert_level,功效就是记录插入后,所有字段的值都妥妥的。
这个:NEW,就是正在插入的记录本身。

for update的也一样,也可以使用:NEW