我是靠谱客的博主 害怕人生,最近开发中收集的这篇文章主要介绍Oracle数据库触发器的应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、触发器介绍
1、数据库触发器是一个与表相关联的、存储的 PL/SQL 程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle 自动地执行触发器中定义的语句序
列。
2、触发器的作用
触发器可用于:
(1)数据确认
(2)实施复杂的安全性检查
(3)做审计,跟踪表上所做的数据操作等
(4)数据的备份和同步
3、触发器的类型
(1)语句级触发器
在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。
(2)行级触发器(FOR EACH ROW)
触发语句作用的每一条记录都被触发。在行级触发器中使用 old 和 new 伪记录变量,识别值的状态。
4、创建触发器的语法
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE |AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
PLSQL 块

二、触发器应用的实例
1、实例:限制非工作时间向数据库插入数据
(1)plsql程序
create or replace trigger securityEmp before insert on emp
declare
begin
if to_char(sysdate,’day’) in (‘星期四’,’星期六’,’星期天’)
or to_number(to_char(sysdate,’hh24’)) not between 8 and 18
then raise_application_error(-20001,’不能在非工作时间插入数据’);
end if;
end;
/

这里介绍一下raise_application_error
RAISE_APPLICATION_ERROR在子程序内部使用时,能从存储子程序中抛出自定义的错误消息。这样就能将错误报告给应用程序而避免范围未捕获异常。
语法如下:
RAISE_APPLICATION_ERROR(error_number, error_message, [keep_errors]);

(2)在sqlplus工具中测试的结果:
先在sqlplus窗口中连接到数据库scott,如下图所示
这里写图片描述
在非工作时间向数据库插入数据,测试结果,如下图所示
插入数据,insert into emp(empno,ename,sal) values(007,’吕布’,15000);
这里写图片描述
2、实例:确认数据,(检查emp表中sal的修改值不低于原值)
(1)plsql程序
create or replace trigger checkSal before update of sal on emp for each row
declare
begin
if :new.sal < :old.sal
then raise_application_error(-20002,’更新后的薪水比更新前小’);
end if;
end;
/

(2)将sal的修改值低于原值,检验上面的触发器的程序,看是否会确认数据,如下图所示:
修改sal,update emp set sal=sal-200 where empno=7934;
这里写图片描述

最后

以上就是害怕人生为你收集整理的Oracle数据库触发器的应用的全部内容,希望文章能够帮你解决Oracle数据库触发器的应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部