知识大全 Oracle触发器语法及实例

Posted 数据库

篇首语:互补的人容易一见钟情,相似的人适合一起变老。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle触发器语法及实例相关的知识,希望对你有一定的参考价值。

Oracle触发器语法及实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 Oracle触发器语法

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

  功能

   允许/限制对表的修改

   自动生成派生列 比如自增字段

   强制数据一致性

   提供审计和日志记录

   防止无效的事务处理

   启用复杂的业务逻辑

  触发器触发时间有两种 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( 不能在周末修改表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_PLAINT_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;

  /

  二

  开始

  create triggerbiufer_employees_department_id

  beforeinsertorupdateofdepartment_idonemployees

  referencingoldasold_value newasnew_value

  for each row

  when (new_value department_id<> )

  begin

  :mission_pct := ;

  end;

  /

   触发器的组成部分

   触发器名称

   触发语句

   触发器限制

   触发操作

   触发器名称

  create trigger biufer_employees_department_id

  命名习惯

  biufer(before insert update for each row)

  employees表名

  department_id列名

   触发语句

  比如

  表或视图上的DML语句

  DDL语句

  Oracle触发器语法(四)

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

  before insert or update

  of department_id

  on employees

  referencing old as old_value

  new as new_value

  for each row

  说明

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

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

   触发器限制

  when (new_value department_id<> )

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

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

   触发操作

  是触发器的主体

  begin

  :mission_pct := ;

  end;

  主体很简单 就是将更新后的mission_pct列置为

  触发

  insert into employees(employee_id last_name first_name hire_date job_id email

  department_id salary mission_pct )

  values( Chen Donny sysdate );

  select mission_pct from employees where employee_id= ;

  触发器不会通知用户 便改变了用户的输入值 Oracle触发器语法(四)

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

  before insert or update

  of department_id

  on employees

  referencing old as old_value

  new as new_value

  for each row

  说明

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

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

   触发器限制

  when (new_value department_id<> )

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

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

   触发操作

  是触发器的主体

  begin

  :mission_pct := ;

  end;

  主体很简单 就是将更新后的mission_pct列置为

  触发

  insert into employees(employee_id last_name first_name hire_date job_id email

  department_id salary mission_pct )

  values( Chen Donny sysdate );

  select mission_pct from employees where employee_id= ;

cha138/Article/program/Oracle/201311/17146

相关参考

知识大全 关于触发器修改自身数据表实例

  前言  当然在触发器修改自身数据表对于有ORACLE数据库后台编程人员来说并不应该算是一个难题可能在平时的工作中就经常要遇到  但对于刚刚使用ORACLE数据库后台编程人员来说的确是一个比较烦人的

知识大全 正则表达式语法及实例整理

  ***正则表达式语法(字符匹配语法重复匹配语法字符定位语法转义匹配语法)********  (字符  \\      将下一个字符标记为

知识大全 JSP语法大全及实例解析

JSP语法大全及实例解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  HTML注释在客户端显示

知识大全 oracle存储过程的基本语法及注意事项

  基本结构  CREATEORREPLACEPROCEDURE存储过程名字  (  参数INNUMBER  参数INNUMBER  )IS  变量INTEGER:=;  变量DATE;  BEGIN

知识大全 SQL触发器实例讲解

SQL触发器实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Arti

知识大全 sql update 语法与实例

  sqlupdate语法与实例  在日常使用的数据库教程是一个不断变化的数据存储在SQL是用于修改数据已经在数据库中的更新和删除mandsThe更新语句可以更新表格中的一个或多个记录命令  UPDA

知识大全 实例讲解Oracle监听口令及监听器安全

实例讲解Oracle监听口令及监听器安全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多人都

知识大全 Oracle触发器详细介绍

Oracle触发器详细介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  触发器  是特定事件出

知识大全 asp For Next 循环语句语法与实例

aspForNext循环语句语法与实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ForNe

知识大全 oracle---Trigger触发器的使用

oracle---Trigger触发器的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记录