Oracle监视表中更改触发器的示例(监视器、删除、更改)
代码uff1a
复制代码代码如下所示:
创建触发器test_trigger
插入或更新或删除test_table之前
每一行
声明
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_ksdwsdwmc VARCHAR2(30);
开始
*
新插入的数据在插入时存储在历史表中。
修改后的修改数据存储在历史表中。
删除时,历史表存储在以前的数据中。
* /
选择org_id_s.nextval为v_id双;使用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);
如果2=:new.depttype然后
v_ksdwsdwmc:= 'shiju;
其他的
如果2003= v_jz然后
v_ksdwsdwmc:= 'zhi;
elsif '05= v_jz然后
v_ksdwsdwmc:= 'xing;
elsif 51= v_jz然后
v_ksdwsdwmc:=她;
其他的
v_ksdwsdwmc:= 'qita;
最后如果;
最后如果;
如果是插入
v_bdlb:= 1;
插入test_table_h
(身份证,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,JZ,ksdwsdwmc)
价值观
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
然后elsif更新
v_bdlb:= 2;
插入test_table_h
(身份证,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,JZ,ksdwsdwmc)
价值观
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
其他的
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);
如果2=:old.depttype然后
v_ksdwsdwmc:= 'shiju;
其他的
如果2003= v_jz然后
v_ksdwsdwmc:= 'zhi;
elsif '05= v_jz然后
v_ksdwsdwmc:= 'xing;
elsif 51= v_jz然后
v_ksdwsdwmc:=她;
其他的
v_ksdwsdwmc:= 'qita;
最后如果;
最后如果;
插入test_table_h
(身份证,bdlb,jgdm,jgmc,gajgmc,gajgwsmc,JZ,ksdwsdwmc)
价值观
(v_id,
v_bdlb,
v_jgdm,
v_jgmc,
v_gajgmc,
v_gajgwsmc,
v_jz,
v_ksdwsdwmc);
最后如果;
结束;