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触发器,将数据库的安全性和安全性提高到一个全新的水平。