Oracle触发器

Oracle触发器是使用者对Oracle数据库的对象做特定的操作时,触发的一段PL/SQL程序代码,叫做触发器。触发的事件包括对表的DML操作,用户的DDL操作以及数据库事件等。

触发器的作用

Oracle触发器可以根据不同的数据库事件进行特定的调用触发器程序块,因此,它可以帮助开发者完成一些PL/SQL存储过程完成不了的问题,比如操作日志的记录、防止一些无效的操作、校验数据的正确性、限制一些对数据库对象的操作、提供数据同步的可行性。但是不推荐在触发器当中写业务逻辑程序,因为这样对后期数据的维护将大大提高成本。

触发器的类型

触发器按照用户具体的操作事件的类型,可以分为5种触发器。大致如下:

1、数据操作(DML)触发器:此触发器是定义在Oracle表上的,当对表执行insert、update、delete操作时可以触发该触发器。如果按照对表中行级数据进行触发或语句级触发,又可以分为行级(row)触发器,语句级触发器,按照修改数据的前后触发触发器,又可以分为 after 触发器和before触发器之分。

2、数据定义操作(DDL)触发器:当对数据库对象进行create、alter、drop操作时,触发触发器进行一些操作记录保存、或者限定操作。

3、用户和系统事件触发器:该类型的触发器是作用在Oracle数据库系统上,当进行数据库事件时,触发触发器,一般用来记录登录的相关信息。

4、INSTEAD OF 触发器:此类型的触发器是作用在视图上,当用户对视图进行操作时,触发该触发器把相关的操作转换为对表进行操作。

5、复合触发器:指的是对数据操作(DML)触发器当中的多种类型触发器进行复合,比如;一个触发器当中包含着after(或before)的行级触发器和after(或before)的语句级触发器,来完成一些更为复杂的操作。


案例1、创建一个简单的触发器来校验学生基本信息的正确性,代码如下:

create or replace trigger tr_xsjbxx_insert
 before insert on stuinfo
 for each row
begin
 --对性别的数据进行校验
 if :new.SEX not in ('1', '2') then
 raise_application_error(-20001, '性别错误,请正确选择。');
 end if;
end;
insert into STUINFO
 (STUID,
 STUNAME,
 SEX,
 AGE,
 CLASSNO,
 STUADDRESS,
 GRADE,
 ENROLDATE,
 IDNUMBER)
values
 ('SC201801006',
 '张三丰',
 '3',
 26,
 'C201801',
 '福建省厦门市XXX号',
 '2018',
 to_date('01-09-2018', 'dd-mm-yyyy'),
 '3503021992XXXXXXXX');

结果如下:

Oracle触发器

代码解析:这是一个DML触发器,是对学生信息表(stuinfo)学生数据插入(insert)之前做的一个性别的校验,当性别的值不符合规范的时候报数据错误。

展开阅读全文

页面更新:2024-04-14

标签:触发器   厦门市   正确性   视图   语句   性别   定义   对象   类型   事件   操作   数据库   数据   用户   学生   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top