Oracle数据库中常用触发器类型及应用(oracle触发器类型)
随着时下越来越多的任务需要被处理,Oracle数据库中触发器的应用也越发尤为重要。触发器的作用是在特定的数据库上的动作发生后立刻开始一个或多个满足我们要求的动作,以实现相应的操作。Oracle数据库中有三种常用的触发器类型,分别是”before”触发器、”after”触发器和”instead of”触发器,它们可以根据需要选择使用。
“before”触发器可以查看特定表的新行是否符合我们的要求,如果不符合要求则可以拒绝这一行。下面的代码可以演示一个”before”触发器的使用示例:
CREATE OR REPLACE TRIGGER student_insert_trigger
BEFORE INSERT ON studentFOR EACH ROW
BEGIN IF :new.age > 18 THEN
RAISE_APPLICATION_ERROR(-20011,'Age should not exceed 18!'); END IF;
END;
上述代码定义了一个“before”触发器,用来验证新插入学生表中的学生是否大于18岁,如果大于18岁则拒绝插入此行,并显示一个错误信息。
“after”触发器可以在特定表产生变化后运行,一般用于执行后期处理或完善操作。下面这个例子演示了如何定义并使用一个“after”触发器:
CREATE OR REPLACE TRIGGER student_credit_trigger
AFTER INSERT OR UPDATE ON studentFOR EACH ROW
BEGIN UPDATE credit SET credit = credit + :new.mark
WHERE id = :new.student_id;END;
上面的代码是定义一个“after”触发器,当插入学生表的学生的学分时,此触发器就会自动更新学生的学分,从而达到后期处理的目的。
最后,”instead of”触发器可以在触发前或者触发后执行,通常会在VIEW上使用,以允许对VIEW进行INSERT、DELETE和UPDATE操作。下面的代码演示了如何使用 “instead of”触发器:
CREATE OR REPLACE TRIGGER student_instead_trigger
INSTEAD OF INSERT OR DELETE ON student_viewFOR EACH ROW
BEGIN IF INSERTING THEN
INSERT INTO student VALUES(:new.name); ELSE
DELETE student WHERE name = :old.name; END IF;
END;
上述代码定义了一个“instead of”触发器,它可以使用“student_view”来插入和删除信息,且可以提供增删改查的能力。
总的来说,Oracle数据库中有三种常用的触发器类型,如“before”触发器、“after”触发器和“instead of”触发器,可以用于处理特定表上的动作。它们可以在触发前、触发后或者触发后提供约束条件、完善操作,用以达到我们想象中的效果。