码迷,mamicode.com
首页 > 其他好文 > 详细

触发器

时间:2015-10-19 23:46:19      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

概述

由于对数据库的数据进行的某些操作(insert,update,delete,create,alter,drop)而引发对表名|视图名|用户模式|数据库进行的操作.

语法

Create [or replace] trigger 触发器名

[before|after|instead of] 触发事件

On 表名|视图名|用户模式|数据库

[for each row] [when 触发条件表达式]

Begin

语句

End;

说明:

a.触发事件如:insert,update,delete,create,alter,drop等操作.

b.before|after|instead of触发事件执行之前|之后|触发器为替代触发器

c.for each row表示行级触发器,对每行数据操作都会触发执行,若没有则表示无论操作多少数据都只触发一次.

触发器分类

1.行级触发器:对每一行数据操作都会引发触发器运行(比较典型的就是序列的应用)

 

 

2.语句级触发器:无论操作多少数据触发器都只执行一次

create or replace trigger tri_stu_log

after insert or update or delete

on student

--for each row加上这句就是行级触发器

declare

  ope varchar2(10);

begin

  if inserting then

    ope:=‘插入‘;

  elsif updating then

   ope:=‘修改‘;

  elsif deleting then

    ope:=‘删除‘;

  end if;

  DBMS_OUTPUT.put_line(ope);

  insert into stu_log

  values(ope,sysdate);

end;

此时删除多条数据只会触发一次

若将上面的语句加粗的for each row加上就是一个行级触发器,此时删除n条数据,会 触发n

这些操作还可以针对特定的某一列的设置,updating(列名)此时,修改其他  列数据并不会触发触发器

 

3.替换触发器:定义在视图而不是表上的触发器,用来替换说使用实际语句的触发器

4.用户事件触发器:由事件引发的触发器(如用户登录数据库,alter表结构等事件)

5.系统事件触发器:oracle系统的事件触发的触发器(如实例的启动,关闭).

 

触发器

标签:

原文地址:http://www.cnblogs.com/JavaTWW/p/4893354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!