标签:
由于对数据库的数据进行的某些操作(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