Oracle数据库中的触发器类型简介(oracle触发器类型)
”’
Oracle数据库中的触发器是一种能够自动地响应表(或视图)中特定操作的存储程序对象。它们的作用在于,在表(或视图)发生变化之后执行指定的操作或内容。Oracle 中的触发器有四种不同的类型:行触发器、表触发器、数据库触发器和阶段触发器。
行触发器是最常见的一种触发器,它用于监视表中数据的变化,并在发生变化后进行应对。它们可以通过被跟踪的表上面的操作(INSERT、UPDATE或 DELETE)被触发。每当表中发生变化,行触发器就会立刻被触发、执行以及终止。例如:
CREATE OR REPLACE TRIGGER trg_product_update
BEFORE
UPDATE OF price
ON product
FOR EACH ROW
BEGIN
UPDATE discount_table
SET new_price = :NEW.price;
END;
/
表触发器用于监视具有特定名称的表,并在发生更改、插入或删除时进行响应。表触发器只能作用于表,不能作用于表中的特定列。例如:
CREATE OR REPLACE TRIGGER trg_product_update
AFTER
UPDATE OR DELETE ON PRODUCT
BEGIN
UPDATE discount_table
SET new_price = :NEW.price;
END;
/
数据库触发器与表触发器相似,但它们的作用范围超出单个表,是一种更大型的触发器,可以针对整个数据库而不是单个表进行跟踪和响应。它们被触发的条件也超出对表的操作,可以像用户登录、特定存储过程的调用等类似事件触发数据库触发器。例如:
CREATE OR REPLACE TRIGGER trg_product_update AFTER LOGON ON DATABASE
BEGIN
UPDATE discount_table
SET new_price = :NEW.price;
END;
/
最后,阶段触发器是 Oracle 12c 新增的触发器类型,用于在查询在运行时以不同阶段触发,并在运行时作出更精细的响应。和表触发器类似,阶段触发器也只能作用于表,不能作用于表的某个具体的列。例如:
CREATE OR REPLACE TRIGGER trg_product_update
BEFORE
INSERT OR UPDATE OR DELETE ON product
FOR EACH ROW
BEFORE EACH ROW
BEGIN
UPDATE discount_table
SET new_price = :NEW.price;
END;
/
以上就是 Oracle 数据库中触发器类型的简要介绍。通过使用 Oracle 触发器,我们可以对整个数据库、单张表或某一行数据进行非常精细的跟踪。它们在 Oracle 中占据了重要地位,应用于众多实际场景,为业务数据的管理提供了额外的功能和灵活性。