Oracle_06 触发器

本文详细介绍了Oracle数据库中的触发器,包括触发器的概述、分类(After和Before触发器)、工作原理以及如何使用临时表`new`和`old`。通过具体的案例演示了触发器在delete、insert、update操作中的应用,以及在多表关联删除和生成标识列方面的实践,为数据库管理和开发提供了实用参考。
摘要由CSDN通过智能技术生成

1.触发器概述.

触发器的本质是一个存储过程,顾名思义,发生特定事件时Oracle才会执行触发器中的	代码(和java里面的监听器有点相似);

特定事件:是执行更新的DML和DDL语句;

触发器不能显式(手动)被调用;

触发器的组成部分:
1 触发器语句(事件):定义激活触发器的 DML 事件和 DDL 事件;
2.触发器限制(when):执行触发器的条件,该条件必须为真才能激活触发器;
3.触发器操作(主体):就是触发器被触发以后具体想表达的事件,在 begin 和 end 之间的 sql。

2. 触发器的分类:

从时间上划分:After触发器 和 Before触发器 两种;
从数据的修改上面划分:insert、delete、update 三种;
从适用范围上划分:行级触发器和表级触发器。

3.触发器工作原理.

3.1 After触发器:

后触发,即在表的数据更新之后触发,注意不是保存之后。

3.2 Before触发器:

前触发,即在表的数据更新前触发。
增加操作用前触发,修改和删除操作用后触发。

4.临时表:new和:old.

在使用触发器的时候Oracle会根据使用触发器的类型自动创建临时表-:new或	者:old,里面的字段和当前所操作的表里面的字段保持一致。

临时表 “:new”:做增加操作的时候Oracle会自动创建该临时表,里面用来临时存	放增加过后的数据。等增加数据确认后,再把该临时表里面的数据插入到真正的表	里面。等增加操作提交之后,该临时表自动消失。

临时表 “:old”:做删除、修改操作的时候Oracle会自动创建该临时表,里面用来临时存放删除、修改前的数据。等删除、修改操作提交后,该临时表自动消失。

5.创建触发器语法.

create or replace trigger 触发器名 --触发器名after insert
–后触发器,而且是增加类型触发器 on 表名 --触发器所依赖的表 for 		each 	row --行级触发器 begin
if :new.字段 = 0 then --触发触发器的条件
dbms_output.put_line(‘警告:已插入记录,但数量为零’); 	raise_application_error(-20018,‘警告:已插入记录,但数量为零!’);
–抛出异常,-20018是错误编码,范围是-20000到-21000。
end if; end;

6.案例演示

6.1数据脚本.

创建学生信息表:
create table stuInfo(
  stuNo varchar2(8) not null primary key,
  stuName varchar2(10) not null,
  stuSex varchar2(2) not null,
  stuAge number(6) not null,
  stuSeat number(6) not null,
  strAddress varchar2(255) default('地址不详')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值