Oracle_触发器_01


DML触发器:DML语句(INSERT/DELETE/UPDATE)进行触发,可以在DML语句操作前或操作后进行触发,也可以对每行或语句进行触发。


替代触发器:由于不能直接操作有2个或以上的表构建的视图,由替代触发器处理这种视图。


系统触发器:Oracle提供的针对数据库系统事件的触发器,例如Oracle的启动/关闭。(Oracle提供的第三类触发器)


触发器组成:

1)触发事件:DDL/DML语句、数据库系统事件(DBMS启动/关闭、异常错误)、用户事件(登录/退出数据库)

2)触发时间:触发器、触发事件的执行顺序,BEFORE / AFTER。

3)触发操作:触发器被触发之后执行的操作。

4)触发对象:表、视图、模式(用户)、数据库,只有在这些对象上发送了符合触发条件的触发事件。

5)触发条件:WHERE子句指定一个逻辑表达式,当该表达式为TRUE时,遇到触发事件才会自动执行触发器,使其执行触发操作。

6)触发频率:语句级触发器、行级触发器。


触发器_注意类型

1)触发器不接受参数

2)一个表最多可以有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个,且各个触发器之间不能有矛盾。

3)一个表上的触发器越多,对该表上DML语句操作的性能影响就越大。

4)触发器的执行部分只能用DML语句(INSERT/DELETE/UPDATE/SELECT),不能用DDL语句(CREATE/DROP/ALTER)

5)触发器中不能包含事物控制语句。因为触发器是触发语句的一部分,触发语句被提交、回滚时,触发器也被提交、回滚。

6)触发器主体中调用的任何函数、过程,都不能使用事务控制语句。


创建触发器:

CREATE OR REPLACE TRIGGER trigger_name IS

{BEFORE | AFTER}

{INSERT | DELETE | UPDATE} ON {tb_name | view_name}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值