Oracle触发器:入门级介绍与分类(oracle触发器类型)

触发器(trigger)入门级的介绍

Oracle触发器是Oracle数据库中的一种服务器端程序,它可以在用户定义的事件发生时自动执行指定的Sql语句。Oracle触发器是一个模块程序,可以应用于DDL或DML操作,使数据库系统能根据不同情况做出不同反应,进而增强数据库安全性和安全性,有效维护数据库完整性。

Oracle触发器分类

Oracle触发器可以分为三种:行级触发器、表级触发器和登录触发器。

一、行级触发器(Row Level Trigger):当发生某种DML操作时,它就触发,以及对触发行做出指定动作。

例如,可以使用行级触发器,在对数据表的某一行数据进行插入和更新操作时,保证插入的数据的正确性和更新的数据的准确性,如:

CREATE OR REPLACE TRIGGER tr_get_time

BEFORE INSERT OR UPDATE ON employee

FOR EACH ROW

BEGIN

IF INSERTING THEN

:new.create_time := sysdate;

ELSIF UPDATING THEN

:new.update_time := sysdate;

END IF;

END;

二、表级触发器(Table Level Trigger):当发生特定的DML操作时,表级触发器就会对触发的数据表进行指定的操作。

例如,在对数据进行操作时,通过表级触发器将安全检查数据表结构,以及检查登录合法性,如:

CREATE OR REPLACE TRIGGER tr_check_login

BEFORE INSERT OR UPDATE OR DELETE ON customer

DECLARE

v_user VARCHAR2(20);

BEGIN

SELECT username INTO v_user

FROM all_user

WHERE username = USER;

IF v_user IS NULL THEN

RAISE_APPLICATION_ERROR(-20001, ‘你没有数据库权限!’);

END IF;

END;

三、登录触发器(Logon trigger):它可以在用户登录系统时自动触发,然后做出指定动作。

例如,当用户连接到Oracle系统后,就可以使用登录触发器检查所连接的服务器IP地址,检查当前登录用户是否有允许的IP地址,如果用户的IP地址不被允许就阻止它的登录,如:

CREATE OR REPLACE TRIGGER tr_check_login_ip

AFTER LOGON ON DATABASE

BEGIN

IF SYS_CONTEXT(‘USERENV’,’IP_ADDRESS’) not in (‘192.168.1.1’, ‘192.168.1.2’) THEN

raise_application_error(-20502,’对不起,你的IP不能登陆:’||sys_context(‘USERENV’,’IP_ADDRESS’));

END IF;

END;

结论

Oracle触发器是Oracle数据库开发者实现业务逻辑的一种有效工具,可以有效地进行数据检查,提高系统安全可信性,实现自动化任务,提高系统运行效率。Oracle数据库开发者可以根据自己的业务需求,合理利用Oracle触发器,将数据库的安全性和安全性提高到一个全新的水平。


数据运维技术 » Oracle触发器:入门级介绍与分类(oracle触发器类型)