Oracle触发器学习总结-Mr王

本文介绍了Oracle触发器的基本概念,包括其作为存储过程的性质,以及触发器的三部分组成:触发事件、执行时间点和执行内容。文章还探讨了触发器的分类,如DDL和DML触发器,并强调了行级触发器与语句触发器的区别。触发器的主要功能,如数据保护、自增字段、数据一致性和审计日志,也在文中提及。最后,提供了一个创建触发器的实例。
摘要由CSDN通过智能技术生成

触发器简介

触发器的本质是一个存储过程,顾名思义发生特定事件时Oracle会执行触发器中的代码。
细分它的组成可以分为3个部分:
第一部分在什么条件下触发器会执行,即触发器被触发的事件。
第二部分在什么时间点执行触发器即触发器的发生事件例如before,after。
第三部分触发器自身所要做的事情,就是触发器被触发以后具体想表达的事件,在begin和end之间的sql。

补充

1.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。
2.区别是触发器是由事件驱动执行的,而存储过程和函数都是被调用是执行
3.触发器不接受任何参数

触发器的分类

1.ddl 触发器:即执行ddl操作后所触发的事件

常用的ddl操作有:grant(授权),revoke(撤销授权),create(创建),drop(删除),alter(修改),
comment(注释),audit(审核),rename(重命名)

2、dml触发器:基于dml操作的触发器,细分又可以分为行触发器和语句触发器。

A、语句触发器:dml操作可能会影响很多行,主要用于对数据的安全保护。
B、行级触发器:针对需要操作的那一行,有关键词:for each row,用来
在进行具体实例以前先来讲解另一个概念:oracle中的user和schema:

触发器语法

create [or replace] tigger 触发器名 触发时间 触发事件
on 表名
[for each row]
begin
 pl/sql语句
end
  • 解释
触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发器执行;
after:表示在数据库动作之后触发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

触发器能实现如下功能:

1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑

小例子

创建触发器例子:

CREATE OR REPLACE TRIGGER TEST_TRIGGER
 AFTER DELETE OR INSERT OR UPDATE ON TEST
DECLARE
 V_TYPE TEST_LOG.L_TYPE%TYPE;
BEGIN
 IF INSERTING THEN
  --INSERT触发
  V_TYPE := 'INSERT';
  DBMS_OUTPUT.PUT_LINE('记录已经成功插入,并已记录到日志');
 ELSIF UPDATING THEN
  --UPDATE触发
  V_TYPE := 'UPDATE';
  DBMS_OUTPUT.PUT_LINE('记录已经成功更新,并已记录到日志');
 ELSIF DELETING THEN
  --DELETE触发
  V_TYPE := 'DELETE';
  DBMS_OUTPUT.PUT_LINE('记录已经成功删除,并已记录到日志');
 END IF;
 INSERT INTO TEST_LOG
 VALUES
  (USER, V_TYPE, TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss')); --USER表示当前用户名
END;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值