`
hybxiaodao
  • 浏览: 244469 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

oracle 触发器 对某张表执行删除和更新操作后记录动作

阅读更多
create or replace trigger emp_bud
before update or delete on emp
for each row
declare
  v_action varchar2(50);
  v_log    varchar2(500) := '';
begin
  if :new.empno is not null then
    begin
      v_log := v_log || '操作' || :new.empno ;
      if :new.ename <> :old.ename then
        v_log := v_log || ' ename 由' || :old.ename || '更改为' || :new.ename;
      end if;
      if :new.job <> :old.job then
        v_log := v_log || ' job 由' || :old.job || '更改为' || :new.job;
      end if;
      if :new.mgr <> :old.mgr then
        v_log := v_log || ' mgr 由' || :old.mgr || '更改为' || :new.mgr;
      end if;
      if :new.hiredate <> :old.hiredate then
        v_log := v_log || ' hiredate 由' || :old.hiredate || '更改为' ||
                 :new.hiredate;
      end if;
      if :new.sal <> :old.sal then
        v_log := v_log || ' sal 由' || :old.sal || '更改为' || :new.sal;
      end if;
      if :new.comm <> :old.comm then
        v_log := v_log || ' comm 由' || :old.comm || '更改为' || :new.comm;
      end if;
      if :new.deptno <> :old.deptno then
        v_log := v_log || ' deptno 由' || :old.deptno || '更改为' || :new.deptno;
      end if;
      if UPDATING then
        v_action := 'update';
      elsif deleting then
        v_action := 'delete';
      end if;
      insert into emp_log
        (id, action, time, log, actor)
      values
        (EMPLOG_SEQ.NEXTVAL, v_action, sysdate, v_log, USER);
      /*pkg_emp.v_emp_obj.empno := :new.empno;
      select *
      into   pkg_emp.v_emp_obj
      from   emp
      where  empno = pkg_emp.v_emp_obj.empno;
      dbms_output.put_line ( 'ename = ' || pkg_emp.v_emp_obj.ename || ' job = ' || pkg_emp.v_emp_obj.job );*/
    exception
      when others then
        dbms_output.put_line(SQLCODE || '-before-' || SQLERRM);
    end;
  else
    pkg_emp.v_emp_obj.empno := 0;
  end if;
end;

 例子: update emp where empno=7369;

注意 : 本例子中一定要有empno才可以

分享到:
评论

相关推荐

    Oracle连接查询子查询以及存储过程触发器讲解

    这个非常经典的oracle数据库的操作,查询和视图,PLSQL介绍,存储过程和触发器的详细PPT讲解,希望对大家有所帮助,挺经典的。

    Oracle通过触发器或者同义词避免用户修改表结构

    Oracle通过触发器或者同义词避免用户修改表结构,2种实现方式,可根据自身需要来选择

    MySQL 触发器详解及简单实例

    MySQL 触发器简单实例 语法 CREATE TRIGGER &lt;...表名称&gt; –触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器

    青云oracle工具

    oracle 的常见第三方工具主要是:toad ,PLSQL Developer,object browser;...8.可以对共享区进行监控,了解那些是不好的SQL以及执行计划; 9.可以在“裸机”上连接数据库,也就是可以无需安装oracle客户端;

    oracle 购物系统(包括表,视图,序列,索引,触发器,程序包,等等)

    包括11张表,4个视图,15个DML触发器,1个替代触发器,若干个序列和存储过程,只要运行一个SQL文件就可以了。

    Oracle绿色版免安装数据库客户端管理工具

    该工具主要优点如下: 1.能便利的生成各种针对于选中字段的...可以对共享区进行监控,了解那些是不好的SQL以及执行计划.9.可以在―裸机‖上连接数据库,也就是可以无需安装oracle客户端.10.兼容oracle8,9,10,11这4个版本.

    OracleDbTools.rar 青云oracle超人性化工具

    7.oracle 有个特点,就是如果表结构发生变化,就会有很多视图,存储过程,触发器等跟着失效,这时候要把这些无效的对象重新编译一下。但是这个动作会经常遗忘, 所以我这里加了一个检索并修正无效对象的功能;

    Oracle 工具

    oracle 的常见第三方工具主要是:toad ,PLSQL Developer,object browser;各有优缺点:toad 主要是功能强大;PLSQL Developer主要是编译精确;object browser主要操作人性化;但在平时的程序开发过程中,就算使用了以上工具...

    SSH项目完整示例-北大青鸟期末考试

    用到了数据库三张表,一个是用户信息表、一个是图书类型、一个是图书信息,其中由于Oracle没有像MySQL那样的自动的自增序列,因此需要新建序列、触发器。配置好数据库相关可直接运行,此项目源于北大青鸟结业考试。

    OracleDbTools

    7.oracle 有个特点,就是如果表结构发生变化,就会有很多视图,存储过程,触发器等跟着失效,这时候要把这些无效的对象重新编译一下。但是这个动作会经常遗忘, 所以我这里加了一个检索并修正无效对象的功能; 8....

    mysql数据库的基本操作语法

    当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外键约束的参照列,在主表中引用的只能...

    db2-技术经验总结

    1.18. 修改表结构后不允许对表进行任何操作(原) 57 1.19. 解决暂挂表(原) 58 1.20. DB2LOOK语法及使用 58 导出表结构的表结构脚本 59 1.21. DB2的函数大全 64 1.22. DB2数据库为单个会话锁定技巧 64 1.23. EXISTS和...

    精髓Oralcle讲课笔记

    -- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...

Global site tag (gtag.js) - Google Analytics