ORACLE PL/SQL 触发器编程篇介绍

1.基本概念

两种功能:完成由数据库的完整性约束难以完成的复杂业务规则的约束;监视数据库的各种操作,实现审计功能。

触发器分为:dml触发器(对表或视图执行dml操作时触发),instead of触发器(只定义在视图上,替代实际的操作语句),系统触发器(对数据库系统进行操作时触发,如ddl语句、启动或关闭数据库等)

触发事件: 上述触发器中括号内容都是触发事件。

触发条件: when子句

触发对象:包括表、视图、模式、数据库。

触发操作:触发器自动执行的程序。

触发时机:触发器相对操作执行的时间,before/after

条件谓词:inserting(触发器事件为insert时为真),updating,deleting

触发子类型:行触发和语句触发,触发中的new和old表。


2.创建触发器


复制代码 代码如下:

create or replace trigger<触发器名>

触发条件

触发体


复制代码 代码如下:

create trigger my_trigger –定义一个触发器my—trigger

before insert or update of tid,tname on teachers

for each row

when(new.tname=’david’) –这一部分是触发条件

declare –下面这一部分是触发体

teacher_id teachers.tid%type;

insert_exist_teacher exception;

begin

select tid into teacher_id

from teachers

where tname=new.tname;

raise insert_exist_teacher;

exception –异常处理也可用在这里

when insert_exist_teacher then

insert into error(tid,err)

values(teacher_id,’the teacher already exists!’);

end my triqqer;

3.执行触发器

自动执行


复制代码 代码如下:

create trigger my_trigger1

after insert or update or delete on teachers

for each row;

declare

info char(10);

begin

if inserting then –如果进行插入操作

info:=’insert’;

elsif updating then –如果进行修改操作

info:=’update’;

else–如果进行删除操作

info:=’delete’;

end if;

insert into sql_info values(info); –记录这次操作信息

end my_trigger1;

4.删除触发器


复制代码 代码如下:

drop trigger my_trigger;

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐