探究Oracle触发器的类型及其应用(oracle触发器类型)
场景
Oracle触发器的类型及其应用场景
Oracle触发器,又称为称为触发式存储过程,一种在完成特定条件后自动地发起特定操作的过程,当大量重复性数据操作同时出现时,该触发器可以完成单次赋值操作以及自动执行数据之间的复杂交互和约束检查逻辑。Oracle触发器主要有三种类型:表触发器、DML触发器和系统触发器。
表触发器是Oracle触发器最复杂的类型,其作用是当某个表或修改表时发生某种变化时触发,其主要的应用场景是在表数据发生变化时对数据予以记录;当使用UPDATE语句时,DML触发器会被触发;当某种特殊的操作发生时,系统触发器会被触发。
以下示例使用这三种触发器在merge指令中实现列表表达式自动填充:
DROP TABLE adr;
CREATE TABLE adr
(
adr_id NUMBER NOT NULL,
street VARCHAR2 (40)
);
–表触发器
CREATE OR REPLACE TRIGGER it_tablename
BEFORE INSERT OR UPDATE ON adr
FOR EACH ROW
BEGIN
IF INSERTING OR :NEW.street IS NULL THEN
:NEW.street:=:NEW.street || ‘ Road’;
END IF;
END;
–DML触发器
CREATE OR REPLACE TRIGGER it_dml
BEFORE INSERT OR UPDATE ON adr
FOR EACH ROW
WHEN (INSERTING OR :NEW.adrid IS NULL)
BEGIN
SELECT adr_seq.nextval INTO :new.adr_id FROM dual;
END;
–系统触发器
CREATE OR REPLACE TRIGGER it_system
BEFORE MERGE ON adr
FOR EACH ROW
WHEN (default)
BEGIN
SELECT adr_seq.nextval INTO :new.adr_id FROM dual;
END;
这里使用表触发器实现自动对street列表中空值进行自动填充“Road”;使用DML触发器在更新或插入操作时自动生成序列号;系统触发器当针对表数据执行MERGE操作时自动生成序列号。
Oracle中的触发器,是一种非常强大的功能,可以帮助数据库开发管理者更好地,处理数据的事务性操作和数据转换事务,在上述案例中,利用三种触发器来实现对数据的赋值操作,这能有效避免数据提交出错或数据转换出错的情况发生,提高数据注入的完整度和准确性。