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

Posted 语句

篇首语:时间仿似一条直线,没有起点,亦无终点。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle触发器详细介绍相关的知识,希望对你有一定的参考价值。

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

  触发器

  是特定事件出现的时候 自动执行的代码块 类似于存储过程 但是用户不能直接调用他们

  功能

   允许/限制对表的修改

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

   强制数据一致性

   提供审计和日志记录

   防止无效的事务处理

   启用复杂的业务逻辑

  开始

  create trigger biufer_employees_department_id

  before insert or update

  of department_id

  on employees

  referencing old as old_value

  new as new_value

  for each row

  when (new_value department_id<> )

  :mission_pct := ;

  触发器的组成部分

   触发器名称

   触发语句

   触发器限制

   触发操作

   触发器名称

  create trigger biufer_employees_department_id

  命名习惯

  biufer(before insert update for each row)

  employees 表名

  department_id 列名

   触发语句

  表或视图上的DML语句

  数据库关闭或启动 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是代表更新之后的值

   触发操作

  是触发器的主体

  :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= ;

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

  触发器类型

   语句触发器

   行触发器

   INSTEAD OF 触发器

   系统条件触发器

   用户事件触发器

   语句触发器

  是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器 能够与INSERT UPDATE DELETE或者组合上进行关联 但是无论使用什么样的组合 各个语句触发器都只会针对指定语句激活一次 比如 无论update多少行 也只会调用一次update语句触发器

  例子

  需要对在表上进行DML操作的用户进行安全检查 看是否具有合适的特权

  Create table foo(a number);

  Create trigger biud_foo

  Before insert or update or delete

  On foo

  If user not in ( DONNY ) then

  Raise_application_error( You don t have access to modify this table );

  End if;

  即使SYS SYSTEM用户也不能修改foo表

  [试验]

  对修改表的时间 人物进行日志记录

   建立试验表

  create table employees_copy as select *from hr employees

   建立日志表

  create table employees_log(

  who varchar ( )

  when date);

   在employees_copy表上建立语句触发器 在触发器中填充employees_log 表

  Create or replace trigger biud_employee_copy

  Before insert or update or delete

  On employees_copy

  Begin

  Insert into employees_log(

  Who when)

  Values( user sysdate);

  

  End;

  /

  update employees_copy set salary= salary* ;

  select *from employess_log;

   确定是哪个语句起作用?

  即是INSERT/UPDATE/DELETE中的哪一个触发了触发器?

  可以在触发器中使用INSERTING / UPDATING / DELETING 条件谓词 作判断

  if inserting then

  

  elsif updating then

  

  elsif deleting then

  

  end if;

  if updating( COL ) or updating( COL ) then

  

  end if;

  [试验]

   修改日志表

  alter table employees_log

  add (action varchar ( ));

   修改触发器 以便记录语句类型

  Create or replace trigger biud_employee_copy

  Before insert or update or delete

  On employees_copy

  Declare

  L_action employees_log action%type;

  Begin

  if inserting then

  l_action:= Insert ;

  elsif updating then

  l_action:= Update ;

  elsif deleting then

  l_action:= Delete ;

  else

  raise_application_error( You should never ever get this error );

  Insert into employees_log(

  Who action when)

  Values( user l_action sysdate);

  End;

  /

  insert into employees_copy( employee_id last_name email hire_date job_id)

  values( Chen Donny@hotmail sysdate );

相关参考

知识大全 oracle触发器的语法详解

  触发器是一种特殊的存储过程下面是触发器的详细说明  ORACLE触发器  ORACLE产生数据库触发器的语法为  create[orreplace]trigger触发器名触发时间触发事件  on表

知识大全 数据库开发规范详细介绍[2]

    四其他设计  避免使用触发器  触发器的功能通常可以用其他方式实现在调试程序时触发器可能成为干扰假如确实需要采用触发器  要集中对它文档化  使用常用英语(或者其他任何语言)而不要使用编码  

知识大全 Oracle启动程序方式详细介绍

Oracle启动程序方式详细介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!startupnom

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

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

知识大全 Oracle中逻辑导出Exp/导入Imp的详细介绍以及参数介绍

Oracle中逻辑导出Exp/导入Imp的详细介绍以及参数介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 详细介绍oracle数据库字符集

  一什么是oracle字符集  Oracle字符集是一个字节数据的解释的符号集合有大小之分有相互的包容关系ORACLE支持国家语言的体系结构允许你使用本地化语言来存储处理检索数据它使数据库工具错误消

知识大全 Oracle 11g必须开启的服务及服务详细介绍

Oracle11g必须开启的服务及服务详细介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  成

知识大全 详细介绍Oracle9i的各个技术特征

详细介绍Oracle9i的各个技术特征  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在介绍Or

知识大全 详细介绍Oracle数据库的聚簇技术

详细介绍Oracle数据库的聚簇技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  什么是聚簇 

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

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