Oracle 触发器:类型及应用(oracle触发器类型)

Oracle触发器是Oracle数据库中的一种强大的数据库功能,它在数据库中暴露出的特定事件发生时自动触发函数或者过程。其两种类型分别是表触发器和系统触发器。表触发器与存储在表中的特定数据相关联,而系统触发器与数据库实例相关联,它们会在触发它们的管理事件发生时被调用。 

表触发器的应用主要有:触发特定数据表的插入、更新和删除操作;自动检查和校验某个字段的数据完整性;在数据变动时记录审计日志;自动更新非主键一致性字段;为一个表创建更新其它表的功能;泵出特定数据,供其它数据库使用;维护特定表的主从关系等等。例如有以下一个表触发器实例,它可以在数据表STUDENTS中每次插入、更新或删除新纪录时,将变化值更新到另一个表DETAILS中。

“`SQL

CREATE TRIGGER UPDATE_DETAILS

AFTER INSERT OR UPDATE OR DELETE ON STUDENTS

FOR EACH ROW

BEGIN

UPDATE DETAILS

SET fields1=:new.value1,

fields2=:new.value2

WHERE key_field=:new.key_field;

END;


系统触发器的应用会与系统产生的事件有相关,它常被应用于实现一些特定业务逻辑功能,主要有:报警和日志管理;在系统启动时执行特定操作;让DBA能够针对资源的使用和保护不同类型的用户;定义当客户连接数达到特定值后,系统采取什么动作;当某个用户登录系统时,给出特定提示信息等等。例如下面这段系统触发器可以在客户从DATABASE 2登录到DATABASE 1时,向客户显示警告信息:

```SQL
CREATE OR REPLACE TRIGGER alert_login_dblink
AFTER LOGON ON database
BEGIN
IF SYS_CONTEXT ('USERENV', 'DB_LINK') = 'DATABASE 2' THEN
DBMS_OUTPUT.PUT_LINE ('Warning! You are now connected to Database 2!');
END IF;
END;

总之,Oracle触发器是一种功能强大的数据库功能,可以帮助用户轻松地实现各种功能性任务,而且只需要少量的代码即可实现,使数据库管理更加轻松高效。


数据运维技术 » Oracle 触发器:类型及应用(oracle触发器类型)