精通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语句的工具,通俗来讲可以在更新数据时,保证数据一致性。

例如:

``` sql
CREATE OR REPLACE TRIGGER tr_grade_update
AFTER UPDATE ON grade
REFERENCING NEW AS grades
FOR EACH ROW

BEGIN
UPDATE student
SET total_score= total_score+:new.grade
WHERE 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触发器的类型繁多,有其独特的用处,读者可以结合自己的业务场景,结合上面的语句写出自己需要的触发器。

数据运维技术 » 精通Oracle触发器类型,轻松掌握创建及使用(oracle触发器类型)