日期:2014-05-16  浏览次数:20480 次

ORACLE之触发器实战(高手勿进)

世界末日过了,我们必须承认,我们都还活着,活着就要学习。今年是个特殊的年份,现在的人想象力太好了,2013,你懂的,希望自己能在这个特殊的年份……你也懂^_^!

人活着,学习就不能停止,华罗庚曾说过:“聪明出于勤奋,天才在于积累”。所以今天的每一步积累都是我们明天成为天才的基础。很多东西都需要亲自动手去实践才能真正掌握,看似简单的知识动起手来就可能会遇到各种问题。经过实际动手,才能真正掌握一个知识点。

一、什么是触发器

触发器是在特定事件出现的时候,自动执行的代码块。类似于存储过程,与存储过程不同的是:存储过程是有用户或应用程序显示调用的,而触发器是不能被直接调用的。触发器是在事件发生时隐式运行的,并且不能接收参数。运行级的触发器的方式叫做激发(Firing)触发器,触发事件可以是对数据库表的DML(INSERT、UPDATE、DELETE)操作或某种视图的操作,也可以是某些系统事件,如数据库的启动和关闭以及某种DDL操作等。

二、触发器的作用

触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和复杂的数据控制能力。作用如下:

1.安全性

--可以基于数据库的值使用户具有操作数据库的某种权利;

--可以基于时间限制用户的操作,例如,不允许非上班时间修改数据库数据;

--可以基于数据库中的数据限制用户的操作,例如,不允许删除特定表或表中的特定记录。

2.审计

--可以跟踪用户对数据库的操作,例如,用户登录、增删改表等等;

--审计用户操作数据库的语句;

--把用户对数据库的更新写入审计表。

3.实现复杂的数据完整性规则

实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的限制。与规则不同,触发器可引用列或数据库对象。例如,触发器可回滚任何企图吃进超过自己保证金的期货,提供可变的默认值。

4.实现复杂的非标准的数据库相关完整性规则

--在修改或删除时级联修改或删除其他表中与之匹配的行;

--在修改或删除时把其他表中与之匹配的行设成NULL值;

--在修改或删除时把其他表中与之匹配的行级联设成默认值。

5.自动计算数据值

若数据的值达到了一定的要求,则进行特定的处理。如,消息表的数据超过以千万条记录,则立即给指定用户发出提示消息。

、触发器种类

1.DML触发器

ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。 ? ? ?

DML是指数据操作语言,如insert|update|delete。

2.替代触发器由于ORACLE在同一时间内不能同事对一个表以上进行操作,所以有一种触发器是建立在视图之上对视图进行INSERT、UPDATE、DELETE操作的,叫替代触发器。与DML触发器不同,DML触发器是在DML操作之外运行的,而替代触发器则代替激发它的DML语句运行,替代触发器是行级的,而且不能指定AFTER和BEFOR。

?

3.系统触发器系统触发器也叫事