PL/SQL之四 触发器

1.概述

   -定义:它是存储于数据库的命名PL/SQL语句块,当触发事件发生时它会会隐含执行。“触发事件”可以是如下的任何一种:处理数据库表的DML语句(如:INSERT、UPDATE、DELETE);特定用户模式下或者任何用户执行的DDL语句(CREATE或ALTER);系统事件(启动或关闭数据库);用户事件(登录和注销)。
   -特点:可被数据库自动反复调用;无法显示调用它,但可显式禁用或启用它。
   -用途:自动生成虚拟的列值;记录事件;收集统计数据;当DML发生在视图上时,能修改表中的数据;保证引用一致性;发布关于数据库事件、用户事件和SQL语句给订阅的应用程序;阻止工作时间之外的DML操作;阻止非法事务;解决约束中无法完成的复杂的商业或引用一致性规则。
   -限制:
         1)触发器除自治事务的触发器外通常不会执行事务控制语句。
         2)不允许在触发器体中声明LONG或LONG RAW变量。
         3)触发器调用的任何函数或者过程也不会执行事务控制语句,除非包括自治事务。
   -创建触发器通用语法:  

create [or replace] trigger trigger_name
{before|AFTER}trigger_eventontable_name  --before|After 指明何时触发器执行。
[for each row] --指定触发器为行触发器,没有指定为‘语句触发器’。
[followsanother_trigger] --指定触发器被触发的顺序。适用于相同表上所定义的,并且在相同时间点会执行的触发器。
[ENABLE/DISABLE] --指定触发器在何种状态(启用|禁用)下创建,不指定时,默认启用。
[When condition]--指定执行触发器必须满足的条件。WHNE子句‘:NEW’|‘:OLD’不使用冒号作为前缀,直接使用NEW|OLD。
Declare
   statements;
begin
    statements;
EXCEPTION
    statements;
end;

2.分类

   按基于的对象:表触发器、视图触发器(instead of)、模式触发器、数据库触发器。
   按时间点:before触发器、after触发器。
   是否按行触发(仅针于DML触发器):行级触发器、语句级触发器

3.DML触发器

   -概览:

         要么创建在表上,要么创建在视图上
         简单或者复合
         --简单触发器:before行级触发器、after行级触发器、before语句级触发器、after语句级触发器、在同一个对象上任意一类触发器可以有多个、但视图上只允许存在行级触发器。
         --复合触发器:合并若干个简单触发器,但上述四种类型每种最多出现一个。
   -条件断言,用于判断具体是哪种DML行为:inserting、updating、updating('fieldname')、deleting。
   -相关名
        -默认为NEW和OLD,可视为table%rowtype类型的变量
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值