比较深入比较:Oracle触发器类型(oracle触发器类型)

Oracle 触发器是一种数据库道具,用于在表上指定的特定操作发生时,在特定时间自动执行一组动作,它允许我们增加某些规则,保护数据库免受不合乎逻辑规则的变更和视图规则的违反. Oracle 支持多种触发器类型,包括行触发器和表级触发器.

行触发器会在表上的某条一行发生特定的操作时触发,当我们使用 Insert、Update 或 Delete 操作对表中的某行进行操作时,行触发器就会被触发,它可以在给定的行开始和结束时做出一系列相应的动作,比如通过日志记录某些表行发生了变化.

例如:

CREATE TRIGGER UpdateProduct

BEFORE

UPDATE ON Products

BEGIN

— body of Trigger

INSERT INTO Products_log(ProductId, OldPrice, NewPrice)

VALUES(:OLD.ProductId, :OLD.Price, :NEW.Price);

END;

表级触发器会在表上发生特定操作时触发,当对表中的数据进行特定的操作时,表级触发器就会被触发,它可以在操作开始前和操作结束后做出一系列相应的动作,比如检查某些条件,如果条件不满足则取消操作,防止注入非法数据.

例如:

CREATE TRIGGER ValidateMinimumPrice

BEFORE

INSERT OR UPDATE ON Products

FOR EACH ROW

BEGIN

IF (:NEW.Price

RAISE_APPLICATION_ERROR(-20500, ‘Price may not be less than 0.01’);

END IF;

END;

通过对比上面两个触发器类型,我们可以发现,行触发器只能通过对表上的单行进行操作而触发,适用于处理流程中的单行任务,而表级触发器则能够在整个表上的操作被执行时触发,适用于处理表级任务.

另外,行触发器不能把一行中的多个操作当作一个事务处理,而表级触发器则能处理表中所有操作,可以把多行操作当作一个事务处理。

总之,Oracle触发器类型有行触发器和表级触发器,两者都可以用来监控数据库中的任务,但根据不同的需求,它们有诸多区别,应当根据实际情况判断使用哪种触发器类型。


数据运维技术 » 比较深入比较:Oracle触发器类型(oracle触发器类型)