触发器

一 Oracle触发器语法sql

  触发器是特定事件出现的时候,自动执行的代码块。相似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。数据库

  功能:ide

  一、 容许/限制对表的修改学习

  二、 自动生成派生列,好比自增字段.net

  三、 强制数据一致性日志

  四、 提供审计和日志记录对象

  五、 防止无效的事务处理blog

  六、 启用复杂的业务逻辑事件

  触发器触发时间有两种:after和before。事务

  一、触发器的语法:

  CREATE [OR REPLACE] TIGGER触发器名 触发时间 触发事件

  ON表名

  [FOR EACH ROW]

  BEGIN

  pl/sql语句

  END

  其中:

  触发器名:触发器对象的名称。

  因为触发器是数据库自动执行的,所以该名称只是一个名称,没有实质的用途。

  触发时间:指明触发器什么时候执行,该值可取:

  before—表示在数据库动做以前触发器执行;

  after—表示在数据库动做以后出发器执行。

  触发事件:指明哪些数据库动做会触发此触发器:

  insert:数据库插入会触发此触发器;

  Oracle触发器语法(二)Oracle触发器详解

  update:数据库修改会触发此触发器;

  delete:数据库删除会触发此触发器。

  表 名:数据库触发器所在的表。

  for each row:对表的每一行触发器执行一次。若是没有这一选项,则只对整个表执行一次。

  二、举例:

  下面的触发器在更新表auths以前触发,目的是不容许在周末修改表:

  create triggerauth_secure before insert or update or delete //对整表更新前触发

  on auths

  begin

  if(to_char(sysdate,’DY’)=’SUN’

  RAISE_APPLICATION_ERROR(-20600,’不能在周末修改表auths’);

  end if;

  end

  例子:

  CREATE OR REPLACE TRIGGER CRM.T_SUB_USERINFO_AUR_NAME AFTER UPDATE OF STAFF_NAME

  ON CRM.T_SUB_USERINFO

  REFERENCING OLD AS OLD NEW AS NEW

  FOR EACH ROW

  declare

  begin

  if :NEW.STAFF_NAME!=:OLD.STAFF_NAME then

  begin

  客户投诉:

  update T_COMPLAINT_MANAGE set SERVE_NAME=:NEW.STAFF_NAME where SERVE_SEED=:OLD.SEED;

  客户关怀

  update T_CUSTOMER_CARE set EXECUTOR_NAME=:NEW.STAFF_NAME where EXECUTOR_SEED=:OLD.SEED;

  客户服务

  update T_CUSTOMER_SERVICE set EXECUTOR_NAME=:NEW.STAFF_NAME

  where EXECUTOR_SEED=:OLD.SEED;

  end;

  end if;

  end T_sub_userinfo_aur_name;

深刻学习

http://blog.csdn.net/yiwanxinyuefml/article/details/7528304

相关文章
相关标签/搜索