WEB开发网
开发学院数据库Oracle Oracle 触发器语法及实例(一) 阅读

Oracle 触发器语法及实例(一)

 2008-09-19 12:55:38 来源:WEB开发网   
核心提示: 例子: CREATEORREPLACETRIGGERCRM.T_SUB_USERINFO_AUR_NAMEAFTERUPDATEOFSTAFF_NAMEONCRM.T_SUB_USERINFOREFERENCINGOLDASOLDNEWASNEWFOREACHROWdeclarebegin

例子:

   CREATEORREPLACETRIGGERCRM.T_SUB_USERINFO_AUR_NAMEAFTERUPDATEOFSTAFF_NAME
  ONCRM.T_SUB_USERINFO
  REFERENCINGOLDASOLDNEWASNEW
  FOREACHROW
  declare
  begin
  if:NEW.STAFF_NAME!=:OLD.STAFF_NAMEthen
  begin

客户投诉 

   updateT_COMPLAINT_MANAGEsetSERVE_NAME=:NEW.STAFF_NAMEwhereSERVE_SEED=:OLD.SEED;

客户关怀  

   updateT_CUSTOMER_CAREsetEXECUTOR_NAME=:NEW.STAFF_NAME
  whereEXECUTOR_SEED=:OLD.SEED;

客户服务 

   updateT_CUSTOMER_SERVICEsetEXECUTOR_NAME=:NEW.STAFF_NAME
  whereEXECUTOR_SEED=:OLD.SEED;
  end;
  endif;
  endT_sub_userinfo_aur_name;
  /

二 Oracle触发器详解

开始:  

   createtriggerbiufer_employees_department_id
  beforeinsertorupdateofdepartment_idonemployees
  referencingoldasold_valuenewasnew_value
  foreachrow
  when(new_value.department_id<>80)
  begin
  :new_value.commission_pct:=0;
  end;
  /

1、触发器的组成部分:

1、 触发器名称

2、 触发语句

3、 触发器限制

4、 触发操作

1.1、触发器名称

   createtriggerbiufer_employees_department_id

命名习惯:  

   biufer(beforeinsertupdateforeachrow)

employees表名

department_id列名

1.2、触发语句

比如:

表或视图上的DML语句

DDL语句

数据库关闭或启动,startup shutdown等等 

   beforeinsertorupdate
  ofdepartment_id
  onemployees
  referencingoldasold_value
  newasnew_value
  foreachrow

说明:

1、 无论是否规定了department_id,对employees表进行insert的时候

2、 对employees表的department_id列进行update的时候

1.3、触发器限制  

   when(new_value.department_id<>80)

限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。

其中的new_value是代表更新之后的值。

1.4、触发操作

是触发器的主体 

   begin
  :new_value.commission_pct:=0;
  end;

主体很简单,就是将更新后的commission_pct列置为0

触发:  

   insertintoemployees(employee_id,last_name,first_name,hire_date,job_id,email,
  department_id,salary,commission_pct)
  values(12345,’Chen’,’Donny’,sysdate,12,‘donny@hotmail.com’,60,10000,.25);
  selectcommission_pctfromemployeeswhereemployee_id=12345;

触发器不会通知用户,便改变了用户的输入值。

上一页  1 2 

Tags:Oracle 触发器 语法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接