探究Oracle中的触发器类型及作用(oracle触发器类型)

Oracle触发器提供了在开发数据库应用程序时关联多个表,以便保证操作一致性规则的有力手段。它们是在某些特定的数据库操作发生时自动调用的stored procedure,可以帮助用户确保它们操作中数据库中数据有效性、完整性和安全性。

Oracle支持不同种类的触发器:

● 某个表(或视图)被更新时所触发的触发器,例如INSERT、UPDATE、IFnd DELETE. 称为行触发器(Row Trigger)。

● 某个表(或视图)的结构被修改时所触发的触发器,例如ALTER、 DROP或TRUNCATE. 称为DDL触发器(DDL Trigger)。

● 登录用户信息发生变化的时候所触发的触发器,例如登陆、踢出、修改密码等。称为登录时触发器(LOGON Trigger)。

行触发器常用于向某些表插入一条新记录或更新某些记录时,自动修改另一个表中的相关记录值。例如,我们可能需要在根据用户的操作更新一张用户信息表的记录时,同时自动更新一张记录某种相关信息的日志表:

例如:

create or replace trigger T1

on users

for update

as

begin

insert into users_log

select users.*, sysdate

from users

where users.user_id = :new.user_id;

end;

/

DDL触发器对数据库中表、视图、序列和用户当前操作等元数据的变化都有响应,可以用于审计和约束某些特定形式的数据定义语言(DDL)操作。例如,可以在更改表定义时自动将这些更改复制到另一张表中:

例如:

create or replace trigger TR_ALTER_TABLE

after alter on database

begin

insert into audittable

select ‘表结构改变’ as operation_type,

user,

:new.object_type,

:new.object_name,

:new.ddl_text,

sysdate

from dual;

end;

/

最后,登录触发器会在用户登录和登出时被调用,用于做更加精准的审计。例如,可以跟踪用户的登录信息,并将其记录在指定的日志表里:

例如:

create or replace trigger TR_LOGON

AFTER LOGON ON DATABASE

begin

insert into logon_log

select sys_context(‘USERENV’,’HOST’) as host,

sys_context(‘USERENV’,’SESSIONID’) as session_id,

sys_context(‘USERENV’,’CURRENT_SCHEMA’) as current_schema,

sysdate as logon_time

from dual;

end;

/

总之,Oracle支持多种类型的触发器,可以在满足用户复杂场景下完成数据库应用程序安全、可靠和有效性的要求,为开发者们带来更多的功能强大的工具,帮助他们构建卓越的数据库应用程序。


数据运维技术 » 探究Oracle中的触发器类型及作用(oracle触发器类型)