触发器可以看做一种“特殊”的存储过程,它定义了一些与数据库相关事件(如INSERT,UPDATE,CREATE等事件)发生时应执行的“功能代码块”,常用与管理复杂的完整性约束,或监控对表的修改,甚至可以实现对数据的审计功能。
触发器语法格式:

create [or replace] trigger tri_name
    [before | after | instead of] tri_event
    on table_name | view_name | user_name | db_name
      [for each row] [where tri_condition]
begin
    plsql_sentences;
end tri_name;
/

根据触发器的触发事件和触发器的执行情况,将Oracle的触发器分为以下5中:

  • 行级触发器
  • 语句触发器
  • 替换触发器
  • 用户事件触发器
  • 系统事件触发器

语句触发器:
实例:使用触发器,在scott模式下针对dept表的各种操作进行监控,为此首先需要创建一个日志表dept_log,它用于存储对dept表的各种数据操作信息,比如操作种类(插入,修改..)、操作时间等。

1 创建dept_log
create table dept_log(
    operate_tag varchar2(10),
    operate_time date
)
2 创建触发器
create or replace trigger tri_dept
 before insert or update or delete on dept
declare var_tag varchar2(10);
begin
  if inserting than var_tag := '插入';
  elsif updating than var_tag := '修改';
  elsif deleting than var_tag := '删除';
  end if;
  insert into dept_log values(var_tag,sysdate);
end tri_dept;
/

未完----

参考
《Oracle从入门到精通》--明日科技 编著

posted on 2017-07-10 12:24  WesTward  阅读(235)  评论(0编辑  收藏  举报