Oracle 触发器

                                               触发器

    触发器是一种在发生数据库事件时自动运行的PL/SQL代码块,在一般情况下它与特定表上的DML操作相关联。注意触发器与数据库中其他过程的区别,过程或函数都由用户直接调用,而触发器的执行用户则不能直接调用。Oracle会在相应的事件发生时,自动调用触发器。

语法组成部分:

在前面的触发器例子中,实际包含了4个主要组成部分: 
触发器名称:

create or replace trigger incr_trigger
  触发条件:

before insert on temp_table for each row
 触发器限制:

when (new.id <=200)
  触发器主体 
    begin
    end;

CREATE [OR REPLACE] TRIGGER trigger_name
AFTER | BEFORE | INSTEAD OF
[INSERT] [[OR] UPDATE [[OR] DELETE] [OF column_list]] 
ON table_or_view_name
[FOR EACH ROW]
[WHEN (condition)]
BEGIN
    pl/sql_block;
END;
Oracle具有不同类型的触发器,包括:
 DML触发器 :

当对表进行DML操作时触发,可以在DML操作前或操作后进行触发。如在表或视图上的数据操作语句,像 INSERT、UPDATE和DELETE操作;
DDL触发器:

当DDL事件发生时而触发。在对象上的数据定义语句,如CREATE、ALTER和DROP;
 替代触发器:

替代触发器是Oracle来用替换所使用的实际语句而执行的触发器。
 系统触发器:

系统触发器就是在Oracle数据库系统的事件中进行触发,如Oracle系统的启动与关闭等.

 语句级触发器:

如果在创建触发器时未使用 for each row 子句,则该触发器为语句级触发器,该触发器在每个数据修改语句执行 后只调用一次,而不管这一操作将影响到多少行。
 行级触发器 :

如果在创建触发器时使用 for each row 子句,则该触发器为行级触发器,当一个DML操作影响数据库中的多行数 据时,对于每个数据行,行级触发器均会被触发一次。


系统事件触发器:

是指由数据库系统事件触发的数据库触发器。数据库系统事件包括如下几种:
  数据库的启动(startup)
  数据库的关闭(shutdown)
  数据库服务器的出错(servererror) 注意:系统事件触发器不是与特定的表或视图关联。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值