Oracle触发器:分类及其用途(oracle触发器类型)
Oracle触发器是Oracle数据库中的一种程序代码构件,它不需要使用者显式调用,而是在某些指定事件发生时自动触发执行,实现赋给它们的任务。Oracle触发器可以分为三种:行级触发器、表级触发器和系统触发器。
行级触发器是在表的内容发生更改时触发的,即当对表中的某一行数据进行INSERT、UPDATE和DELETE操作时,就会触发此行级触发器。下面的代码段为一个行级触发器的示例:
CREATE OR REPLACE TRIGGER TR_Table1_AFTER_U
AFTER UPDATE ON Table1
FOR EACH ROW
BEGIN
INSERT INTO Table2 VALUES(:OLD.ID,:OLD.Name);
END;
表级触发器是在表的内容发生大范围变动时触发的,即当对表中的某一行数据进行INSERT、UPDATE和DELETE操作时,所有修改行都会触发表级触发器。下面的代码段为一个表级触发器的示例:
CREATE OR REPLACE TRIGGER TR_Table1_AFTER_ITU
AFTER INSERT OR DELETE OR UPDATE ON Table1
DECLARE
v_count INT;
BEGIN
SELECT COUNT(*) INTO v_count FROM Table1;
IF v_count>10 THEN
INSERT INTO Table2 VALUES(‘表行数超过10行’);
END IF;
END;
最后,Oracle系统触发器是在数据库层面、应用程序程序层面或表之间关系发生变化时触发的,它们通常较为复杂,常常与某些系统内部概念和服务有关,它们也可以完成赋予自动任务。下面这个示例属于一个系统触发器,在用户连接数据库时触发:
CREATE OR REPLACE TRIGGER TR_SYS_CONNECTION
FIRED WHEN LOGON
BEGIN
INSERT INTO Table2(UserName, LogonTime)
VALUES(SYS_CONTEXT(‘USERENV’,’SESSION_USER’),
SYSDATE);
END;
总的来说,Oracle触发器是一种强大的工具,可以帮助我们自动完成一些任务,而不需要显式地调用构件。它可以在表内容发生变动时、表间关系更改时,甚至是用户连接数据库时被触发执行,同时,它也可以对表中的每一行或多行数据进行一致的数据处理。因此,Oracle触发器的用途非常广泛,可以在多种场合中使用它们,实现各种功能。