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

所属分类: 数据库 / oracle 阅读数: 475
收藏 0 赞 0 分享

使用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(plsql)生成流水号

这篇文章主要介绍了oracle(plsql)生成流水号,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle中decode函数的使用方法

这篇文章主要介绍了oracle中decode函数的使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle数据远程连接的四种设置方法和注意事项

Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍
收藏 0 赞 0 分享

oracle表空间中空表统计方法示例介绍

这篇文章主要介绍了oracle表空间中空表统计方法,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle用户权限、角色管理详解

这篇文章主要介绍了oracle用户权限、角色管理的使用和示例,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle用户权限管理使用详解

这篇文章主要介绍了oracle用户权限管理使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle生成动态前缀且自增号码的函数分享

这篇文章主要介绍了oracle生成动态前缀且自增号码的函数,需要的朋友可以参考下
收藏 0 赞 0 分享

45个非常有用的 Oracle 查询语句小结

这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧
收藏 0 赞 0 分享

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

这篇文章主要介绍了oracle监控某表变动触发器例子(监控增,删,改),用于监控某表的变动并生成日志记录到另一个表,需要的朋友可以参考下
收藏 0 赞 0 分享

oracle 数据库隔离级别学习

这篇文章主要介绍了oracle数据库的隔离级别相关的知识,数据库操作的隔离级别,有需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多