Oracle数据库中触发器的种类及其用法(oracle触发器类型)
在Oracle数据库系统中,触发器是一个允许定制表行为的有用特性。它是一段特殊的存储过程,在数据库对象受到特定操作时触发。这些操作可能是对表的插入、更新或删除等操作,在这些操作发生时,它会自动地执行某些存储过程,常用这种特性来实现表的完整性和数据的完整性,并且可以在操作发生前或发生后执行特定操作。
Oracle数据库共支持三种触发器,按照触发类别划分,它们分别是:行触发器、表触发器和十六行触发器。
1. 行触发器
行触发器是一种数据库对象,它和表是一一对应的,每一行触发器都会直接与一个表连接,当操作的表的行的数据发生变化时,它会被触发并且运行。Oracle中的行触发器有以下几种:
(1)BEFORE INSERT触发器:这种触发器在插入表行数据前被触发,它可以用来检查输入行数据,修改输入行数据,修改其他表数据等。下面是一个表行触发器的示例:
CREATE OR REPLACE TRIGGER trg_BeforeInsert
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
— 这里是行触发器的功能定义及操作
END;
(2)AFTER INSERT触发器:这种触发器在插入表行数据之后被触发,常用于更新其他相关的表,如记录操作历史等。示例如下:
CREATE OR REPLACE TRIGGER trg_AfterInsert
AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
— 这里是行触发器的功能定义及操作
END;
(3)BEFORE UPDATE触发器:这种触发器在更新表行数据前被触发,它可以用来检查修改的行数据,修改输入行数据,修改其他表数据等。示例如下:
CREATE OR REPLACE TRIGGER trg_BeforeUpdate
BEFORE UPDATE ON table_name
FOR EACH ROW
BEGIN
— 这里是行触发器的功能定义及操作
END;
(4)AFTER UPDATE触发器:这种触发器在更新表行数据之后被触发,常用于更新其他表表,如记录操作历史等。示例如下:
CREATE OR REPLACE TRIGGER trg_AfterUpdate
AFTER UPDATE ON table_name
FOR EACH ROW
BEGIN
— 这里是行触发器的功能定义及操作
END;
2. 表触发器
表触发器和行触发器有些类似,只不过表触发器是和表而不是行一一对应的,只有对表执行DML操作时才会触发表触发器,而不管对表执行哪种操作,都只会触发一次,作用域也不局限于某一行。Oracle中的表触发器有以下几种:
(1)BEFORE INSERT触发器:这种触发器在插入表行数据前被触发,它可以用来检查整体输入数据,修改输入表行数据,修改其他表数据等。示例如下:
CREATE OR REPLACE TRIGGER trg_BeforeInsertTable
BEFORE INSERT ON table_name
BEGIN
— 这里是表触发器的功能定义及操作
END;
(2)AFTER INSERT触发器:这种触发器在插入表行数据之后被触发,用来检查整体输入数据,更新其他相关的表,如记录操作历史等。示例如下:
CREATE OR REPLACE