精通Oracle触发器类型,轻松掌握创建及使用(oracle触发器类型)
Oracle触发器非常适用于管理业务数据库,用来对数据进行自动化的管理,能够提高数据完整性与一致性,如账目更新、安全性校验等。只要掌握触发器的使用,就可以快速的完成任务。
Oracle的触发器是分为表触发器、行触发器和系统定义触发器三类,满足不同的业务开发需求,用途也比较广泛。
①表触发器:表触发器能够根据指定的事件(插入、更新、删除等),在完成触发事件之后,自动地执行特定的代码,从而实现松耦合的联动数据库操作。
例如:
“` sql
create or replace trigger tr_student_insert
before insert on STUDENT
for each row
declare
begin
if :new.age>120 then
raise_application_error(-20001,’人不能这么老!’);
end if;
end;
上面的语句定义了一个表触发器,它的功能是,在创建一条学生信息时,检查学生的年龄是否小于120岁,如果学生的年龄大于120岁,就报错提示:”人不能这么老!“。
②行触发器:行触发器是另一种在修改表数据记录时,应用程序将自动执行SQL语句的工具,通俗来讲可以在更新数据时,保证数据一致性。
例如:
``` sqlCREATE OR REPLACE TRIGGER tr_grade_update
AFTER UPDATE ON gradeREFERENCING NEW AS grades
FOR EACH ROW
BEGIN UPDATE student
SET total_score= total_score+:new.gradeWHERE ID= :new.ID;
END;
行触发器上面的语句定义的是一个:当成绩更新的时候,自动更新学生的总分数据。
③系统定义触发器:系统定义触发器是为OHAS提供的一种技术,用于对数据的自动审计,主要用于保证数据安全,确保数据正确地进入数据库,和以后如果有修改,可以重置到修改之前的状态。
例如:
“` sql
CREATE OR replace TRIGGER tr_student_log
BEFORE INSERT ON student
FOR EACH ROW
BEGIN
INSERT INTO student_log(ID,name,age)
VALUES (:old.ID,:old.name,:old.age);
END;
本示例中,定义了一个:在添加一条学生信息之前,自动把学生信息添加到学生日志表中的系统定义触发器。
总之,通过上述介绍,不难看出,Oracle触发器的类型繁多,有其独特的用处,读者可以结合自己的业务场景,结合上面的语句写出自己需要的触发器。