手机
当前位置:查字典教程网 >编程开发 >Oracle教程 >oracle监控某表变动触发器例子(监控增,删,改)
oracle监控某表变动触发器例子(监控增,删,改)
摘要:使用oracle触发器实现对某个表的增改删的监控操作,并记录到另一个表中。代码:复制代码代码如下:createorreplacetrigge...

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

代码:

复制代码 代码如下:

create or replace trigger test_trigger

before insert or update or delete on test_table

for each row

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_ksdwsdwmc VARCHAR2(30);

begin

/*

插入时往历史表中存放的是新插入的数据.

修改时往历史表中存放的是修改后的数据.

删除时往历史表中存放的是删除之前的数据.

*/

select org_id_s.nextval into v_id from dual; -- 利用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.depttype then

v_ksdwsdwmc := 'shiju';

else

if '03' = v_jz then

v_ksdwsdwmc := 'zhi';

elsif '05' = v_jz then

v_ksdwsdwmc := 'xing';

elsif '51' = v_jz then

v_ksdwsdwmc := 'she';

else

v_ksdwsdwmc := 'qita';

end if;

end if;

if inserting then

v_bdlb := '1';

insert into test_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);

elsif updating then

v_bdlb := '2';

insert into test_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.depttype then

v_ksdwsdwmc := 'shiju';

else

if '03' = v_jz then

v_ksdwsdwmc := 'zhi';

elsif '05' = v_jz then

v_ksdwsdwmc := 'xing';

elsif '51' = v_jz then

v_ksdwsdwmc := 'she';

else

v_ksdwsdwmc := 'qita';

end if;

end if;

insert into test_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);

end if;

end;

【oracle监控某表变动触发器例子(监控增,删,改)】相关文章:

oracle闪回表详解

设置oralce自动内存管理执行步骤

oracle 触发器 实现出入库

oracle之查询某个表上的触发器

oracle 声明游标(不具备字段)规则应用

window中oracle环境变量设置方法分享

oracle表空间表分区详解及oracle表分区查询使用方法

oracle数据库中查看系统存储过程的方法

Oracle三种表连接技术

Oracle与Mysql自动增长列(id)的区别

精品推荐
分类导航