掌握Oracle触发器类型,轻松精准掌控数据(oracle触发器类型)

Oracle触发器是使用SQL和PL/SQL执行定义的操作的工具,在记录表中执行操作时自动触发。 Oracle中有三种不同类型的触发器:行触发器,表级触发器和系统触发器。

首先,行触发器是基于表的行的触发器,当UPDATE,INSERT或DELETE操作发生时即可触发行触发器。 它可以完成表中的任何操作,包括更新表的其他行或更改数据库的其他表中的数据。 例如,这里有一个行触发器:

CREATE OR REPLACE TRIGGER TRG_EMP_STUFF

BEFORE INSERT ON EMPLOYEES

FOR EACH ROW

BEGIN

IF :NEW.SALARY > 10000 THEN

:NEW.JOB := ‘TECHNICAL STUFF’;

END IF;

END;

因此,如果使用INSERT语句向EMPLOYEES表中插入一行,并且该行中的SALARY大于10000,则在插入之前,一个JOB列会被自动更新为“TECHNICAL STUFF”。

其次,表级触发器通常用来定义在整个表上的操作,即无论发生什么操作,该触发器都会被激活,在实际应用中常常用于跟踪某一表上所有更改的信息。 例如,下面是表级触发器:

CREATE OR REPLACE TRIGGER TRG_PRODUCTS

BEFORE INSERT OR UPDATE OR DELETE ON PRODUCTS

FOR EACH ROW

BEGIN

INSERT INTO PRODUCTS_LOG VALUES

(:NEW.ID, :OLD.PRODUCT_NAME);

END;

上述触发器将在删除,更新或插入表“PRODUCTS”中的每一行时自动触发,从而将ID和Product Name保存到另一个表中,以用于查看表中所有更改的信息。

最后,系统触发器是一种系统级别的触发器,可以定义对任何数据库变更都具有相同操作的操作。 例如,可以创建一个系统触发器定义当任何用户尝试更改某些表时将更改记录在一个日志表中:

CREATE OR REPLACE TRIGGER TRG_SYSTEM_AUDIT

AFTER INSERT OR UPDATE OR DELETE ON any_table

FOR EACH ROW

BEGIN

INSERT INTO PRODUCTS_LOG VALUES

(SYSDATE, USER, :NEW.ID, :OLD.PRODUCT_NAME);

END;

上述系统触发器意味着,无论什么时候用户在系统中更改任何表中的数据,都会记录更改时间,更改用户和更改表中ID和Product Name信息,便于管理。

因此,Oracle触发器是非常强大的工具,能够帮助使用者更准确地管理数据库,从而更好地满足业务需求。行触发器,表级触发器和系统触发器均为把控数据库变化的重要工具,可以掌握这三种触发器的使用,从而更轻松地把控数据库变更。


数据运维技术 » 掌握Oracle触发器类型,轻松精准掌控数据(oracle触发器类型)