APP下载

触发器在Oracle数据库中的应用研究

2015-06-24彭娇

软件导刊 2015年6期
关键词:触发器

摘要:Oracle数据库是目前世界上使用最为广泛的数据库管理系统,而触发器作为一种特殊类型的存储过程,在维护数据库安全性、完整性等方面有着重要作用。以SYSTEM模式中的emp和dept数据表为例,阐述了触发器的概念及具体应用,以及其在数据库开发中强大的功能和特点。

关键词:Oracle;触发器;SYSTEM模式;数据库应用

DOIDOI:10.11907/rjdk.151136

中图分类号:TP392

文献标识码:A 文章编号:16727800(2015)006015102

基金项目基金项目:广东科技学院院级重点项目(GKY-2013KYLX-005)

作者简介作者简介:彭娇(1982-),女,河北石家庄人,硕士,广东科技学院计算机系讲师,研究方向为管理科学与工程。

0 引言

触发器在Oracle数据库开发中作用强大,可以方便地基于一个表的修改,自动更新其它相关表的记录,以保证数据的完整性和一致性。触发器是建立在Oracle数据表上的一种特殊的存储过程,它定义了一些与数据库相关事件(INSERT、UPDATE、CREATE等)发生时应执行的“功能代码块”,通常用于管理复杂的完整性约束或监控对表的修改,或通知其它程序,甚至可以实现对数据的审计功能。与一般存储过程不同,触发器不能直接调用,而是由事件启动运行的,当事件发生或出现指定操作时,触发器会自动激活,进行设定的数据处理。

1 触发器组成及分类

触发器由触发事件、触发时机、触发操作、触发对象及触发频率等几部分组成[1]。

触发事件,是引起触发器被触发的事件。例如,执行DML语句、DDL语句、数据库系统事件(如系统启动或退出、产生异常错误等)和用户事件(如登录或退出数据库操作),这些操作都可以引起触发器的运行。

触发时机:表示在触发事件发生之前还是之后执行触发。关键字为BEFORE、AFTER或INSTEAD OF。BEFORE表示在执行DML等操作之前触发;AFTER表示在DML等操作之后发生;INSTEAD OF表示触发器是替代触发器。

触发操作:触发器被触发后执行的“程序代码块”。

触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,才会执行触发操作。

触发频率:指触发器内定义的动作被执行的次数,即语句级触发器或行级触发器。

根据触发事件和触发器的执行情况,可以将Oracle所支持的触发器分为5种类型:语句级触发器、行级触发器、替换触发器、用户事件触发器和系统事件触发器。

语句级触发器:针对一条DML语句而引起的触发器执行,无论该语句影响了多少行数据,触发器只会执行一次。

行级触发器:相对于语句级触发器而言,行级触发器会针对DML操作所影响的每一行数据执行一次触发器。

替换触发器:替换触发器定义在视图上,而不是数据表上。视图是由多个基表连接组成的逻辑结构,一般不允许进行DML操作。当编写替换触发器后,对视图的操作实际上就变成了对构成视图的各个基表的操作。

用户和系统事件触发器:因DDL操作或用户登录、退出或系统事件等操作而引起运行的一种触发器。

2 触发器编写应用实例

以Oracle数据库中SYSTEM模式下的emp和dept两张表为例。emp为员工信息表,dept为部门信息表,具体结构如表1、表2所示。

以emp和dept为基表,满足以下要求:①创建新表dept_log来监控dept表的操作信息及操作日期;②以emp和dept为基表,创建一个检索员工信息的视图,对视图进行insert操作。以上两点要求,实际上是在emp和dept表中创建行级触发器和替换触发器的问题。

3 触发器编写注意事项

在Oracle数据库开发中,触发器编写需注意以下几点:①触发器的定义不允许带有参数;②一个表上最多有12个触发器。但同一时间、同一事件的触发器只能有一个,并且各触发器之间不能有矛盾;③触发器的执行部分只能用DML语句(如SELECT、INSERT、DELETE),不能使用DDL语句;④触发器中不能包含事务控制语句(如COMMIT、ROLLBACK、SAVEPOINT)。

4 结语

触发器技术是保证数据完整性、一致性的一种方法,在数据库开发中具有强大功能。在实际开发应用中,如能熟练地将触发器与数据库视图、函数、存储过程有机结合起来使用,将极大地提高计算机系统的运行效率,达到满意的效果。

参考文献:

[1] 杨永健,刘尚毅.ORACLE数据库管理、开发与实践[M].北京:人民邮电出版社,2012(12):141150.

[2] 顾云锋,杨素霞.Oracle数据库中存储过程开发研究[J].计算机与现代化,2011(10):138142.

[3] 刘维学,乔丽平.SQL Server数据库DML触发器的研究与应用[J].计算机技术与发展,2013(11):6673.

[4] 杨桂霞.存储过程及触发器在SQL Server数据库开发中的应用[J].计算机光盘软件与应用,2012(1):6667.

[5] 石道生,张士军,孙山.SQL Server数据库触发器与存储过程技术在自定义数据表中的应用[J].计算机与现代化,2004(3):22-27.

[6] 程凡,张维勇,王建新. 存储过程和触发器在银行报表管理系统中的应用[J].合肥工业大学学报,2004(3):125128.

责任编辑(责任编辑:杜能钢)

猜你喜欢

触发器
主从JK触发器逻辑功能分析
使用触发器,强化安全性
几种常见触发器工作方式的讨论
对触发器逻辑功能转换的分析
触发器逻辑功能转换的两种方法
巧妙应用SQL Server触发器