zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

oracle监控某表变动触发器例子(监控增,删,改)

Oracle监控 触发器 例子 变动 某表
2023-06-13 09:15:25 时间

使用oracle触发器实现对某个表的增改删的监控操作,并记录到另一个表中。

代码:

复制代码代码如下:

createorreplacetriggertest_trigger 
 beforeinsertorupdateordeleteontest_table 
 foreachrow 
declare 
 v_id       varchar2(30); 
 v_bdlb     varchar2(1); 
 v_jgdm     VARCHAR2(12); 
 v_jgmc     VARCHAR2(60); 
 v_gajgmc   VARCHAR2(60); 
 v_gajgwsmc VARCHAR2(30); 
 v_jz       VARCHAR2(30); 
 v_ksdwsdwmcVARCHAR2(30); 
begin 
 /* 
   插入时往历史表中存放的是新插入的数据. 
   修改时往历史表中存放的是修改后的数据. 
   删除时往历史表中存放的是删除之前的数据. 
 */ 
 selectorg_id_s.nextvalintov_idfromdual;--利用seq生成主键 
 v_jgdm    :=:new.row_id; 
 v_jgmc    :=:new.dept_name; 
 v_gajgmc  :=:new.dept_name; 
 v_gajgwsmc:=:new.bmjc; 
 v_jz      :=substr(v_jgdm,7,2); 
 if"2"=:new.depttypethen 
   v_ksdwsdwmc:="shiju"; 
 else 
   if"03"=v_jzthen 
     v_ksdwsdwmc:="zhi"; 
   elsif"05"=v_jzthen 
     v_ksdwsdwmc:="xing"; 
   elsif"51"=v_jzthen 
     v_ksdwsdwmc:="she"; 
   else 
     v_ksdwsdwmc:="qita"; 
   endif; 
 endif; 

 ifinsertingthen 
   v_bdlb:="1"; 
   insertintotest_table_h 
     (id,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,jz,ksdwsdwmc) 
   values 
     (v_id, 
      v_bdlb, 
      v_jgdm, 
      v_jgmc, 
      v_gajgmc, 
      v_gajgwsmc, 
      v_jz, 
      v_ksdwsdwmc); 
 elsifupdatingthen 
   v_bdlb:="2"; 
   insertintotest_table_h 
     (id,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,jz,ksdwsdwmc) 
   values 
     (v_id, 
      v_bdlb, 
      v_jgdm, 
      v_jgmc, 
      v_gajgmc, 
      v_gajgwsmc, 
      v_jz, 
      v_ksdwsdwmc); 
 else 
   v_bdlb    :="3"; 
   v_jgdm    :=:old.row_id; 
   v_jgmc    :=:old.dept_name; 
   v_gajgmc  :=:old.dept_name; 
   v_gajgwsmc:=:old.bmjc; 
   v_jz      :=substr(v_jgdm,7,2); 
   if"2"=:old.depttypethen 
     v_ksdwsdwmc:="shiju"; 
   else 
     if"03"=v_jzthen 
       v_ksdwsdwmc:="zhi"; 
     elsif"05"=v_jzthen 
       v_ksdwsdwmc:="xing"; 
     elsif"51"=v_jzthen 
       v_ksdwsdwmc:="she"; 
     else 
       v_ksdwsdwmc:="qita"; 
     endif; 
   endif; 
   insertintotest_table_h 
     (id,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,jz,ksdwsdwmc) 
   values 
     (v_id, 
      v_bdlb, 
      v_jgdm, 
      v_jgmc, 
      v_gajgmc, 
      v_gajgwsmc, 
      v_jz, 
      v_ksdwsdwmc); 
 endif; 
end;