Oracle数据库-触发器

概述

  触发器用来定义与数据库有关的某个事件发生时,数据库将要执行的操作。例如执行Insert、Update和Delete等命令,或者一些DDL命令和数据库事件(如关闭和登录)时,可以执行触发器。

  *因为触发器具有灵活性,所以可以用来补充参照完整性,但不应用来替代参照完整性。在应用程序中强制实施某些业务规则时,首先应依赖Oracle声明的参照完整性,然后才用触发器来强制实施不能通过参照完整性进行编码的规则。

1.相关的权限

系统权限:  Alter (Any) Table
       Create (Any) Trigger
       Alter (Any) Trigger
       Administer Database Trigger(在数据库级别的事件上创建触发器时需要)
       
表权限:除了启动触发器事件的表外,触发器还可以引用表,例如在表A每次发生变化时,在表B中插入一条记录。为了实现这种操作,需要有权对B表进行插入操作。
  总之,需要具有触发器本身的权限,以及涉及到的所有表的相关操作必要的权限,根据具体情况具体分析。

**触发器的事务所需权限不能来自角色,必须直接被授予触发器的创建者

2.触发器的类型

触发器的类型由触发事务的类型和执行触发器的级别定义。

2.1 行级触发器:
  对受DML语句影响的每一行执行一次。它是最常用的触发器,通常用于数据审计中。
2.2 语句级触发器:
  对每条DML语句执行一次,因此一般不常用于与数据相关的活动,而是作为针对在一个表上的各种操作的安全措施。
2.3 BEFORE和AFTER触发器:
  可以设置触发器在事件之前还是之后执行。但要注意,对于数据库级别的事件要具体分析,例如不能在登录之前执行触发器。
2.4 INSTEAD OF触发器:
  可以使用Instead of触发器告诉Oracle要做的工作,而不是调用触发器。它主要用于支持对象视图和关系视图。例如,如果一个视图涉及两个表的连接,则在视图上使用UPDATE命令权限会受到限制,此时使用INSTEAD OF触发器就可以让Oracle执行触发器中的代码来代替INSERT、UPDATE和DELETE命令。
2.5 模式触发器
  可以在模式级别的操作上创建触发器,这些操作包括:
  CREATE TABLE    ALTER TABLE
  DROP TABLE     AUDIT
  RENAME       TRUNCATE
  REVOKE 等。
  甚至可以创建BEFORE DDL触发器。大多数情况下,模式触发器提供两种功能:1. 阻止DDL操作。2.在发生DDL操作时提供额外的安全监控。
2.6 数据库级触发器
  可以创建在数据库级别的事件上触发的触发器,包括错误、登录、注销、启动和关闭。可以用这种触发器自动进行数据库维护或审计操作。

3.触发器的语法

CREATE [OR REPLACE] TRIGGER [schema.] trigger 
{BEFORE | AFTER | INSTEAD OF} 
{dml_event_clause | {ddl
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值