全面解析Oracle触发器类型(oracle触发器类型)

Oracle触发器(Triggers)是用户定义的特殊存储程序,他能在表或视图上被触发从而产生外部应用程序动态数据库行为变化的效果,他能很好的实现“做不到的地方我就把它触发出去”,也能解决死锁(Ex:如果你要更新表t1表中某数据时出现了死锁,用Trigger你就可以实现这条更新语句)。

Oracle触发器的类型应用范围比较广泛分为表触发器(table trigger)和系统触发器(system trigger),他们有自己的使用范围,下文将对这两种类型的Oracle触发器作一全面解析。

一、表触发器(Table trigger)

表触发器是一种最大范围应用的Oracle触发器,他可以在表或视图上被触发,通过开发者在DML语句(select、insert、update、delete),或DDL语句(Create、Alter、Drop)发生事件来响应,表触发器可以定义基于一个或多个表的触发器,它常用在要求实时性比较强的场合,最常用的的是禁止违反完整性的更新,以及基于记录的历史记录跟踪。最常见的生成表触发器的语句如下:

CREATE OR REPLACE TRIGGER trigger_name

AFTER AFTER INSERT OR UPDATE OR DELETE

ON table_name

FOR EACH ROW

BEGIN

/*Trigger code */

END;

二、系统触发器(System trigger)

系统触发器是一种只有系统管理员才能在数据库级别上开发使用的Oracle触发器,系统触发器能捕获服务器端发生的事件,然后触发定义的存储过程,使用范围比较广泛,如记录登录警告、日志或拒绝访问日志。最常见的生成系统触发器的语句如下:

CREATE OR REPLACE TRIGGER trigger_name

BEFORE LOGON ON DATABASE

BEGIN

/* Trigger code */

END;

从上述代码来看,他们使用起来有很大的不同,表触发器主要用于拦截DML和DDL操作,而系统触发器主要是与数据库登录有关,需要跟踪登录或登出的动作,并在发生这些事件时作出反应,如显示欢迎信息等。

总之,Oracle数据库的触发器有表触发器和系统触发器这两种类型,表触发器是可以实现数据库完整性要求,实现记录变更历史跟踪,系统触发器可以实现对数据库登录或登出动作的跟踪,通过它们可以解决很多日常应用中的困难,使Oracle数据库得到更好的运用。


数据运维技术 » 全面解析Oracle触发器类型(oracle触发器类型)