深入理解Oracle数据库触发器类型(oracle触发器类型)

Oracle的触发器是一种用于检查定义的条件或条件出现改变时自动执行的功能。它支持两种类型的触发器:行级触发器和表级触发器。

行级触发器检查某个表的行发生变化时会被触发,行级触发器可以在插入、更新、删除操作发生时执行。语法形式如下:

CREATE TRIGGER []

[BEFORE INSERT|UPDATE|DELETE]

ON

[FOR EACH ROW]

[]

BEGIN

[]

END;

例如:

CREATE TRIGGER tr_news_update

BEFORE UPDATE

ON news

FOR EACH ROW

DECLARE

days_per_month INTEGER;

BEGIN

SELECT COUNT(*) INTO days_per_month

FROM news

WHERE news.myDateCol>=:OLD.myDateCol

AND news.myDateCol

IF days_per_month>20 THEN

raise_application_error( -20999, ‘Cannot make more than 20 updates per month’);

END IF;

END;

表级触发器触发的时机是,在DML操作前或者后,语法形式如下:

CREATE TRIGGER []

[BEFORE|AFTER] [INSERT|UPDATE|DELETE]

ON

[REFERENCING ]

[FOR EACH ROW]

[]

BEGIN

[]

END;

例如:

CREATE TRIGGER tr_news_update

BEFORE UPDATE

ON news

REFRESHING OLD AS OLD FOR EACH ROW

DECLARE

days_per_month INTEGER;

BEGIN

SELECT COUNT(*) INTO days_per_month

FROM news

WHERE news.myDateCol>=OLD.myDateCol

AND news.myDateCol

IF days_per_month>20 THEN

raise_application_error( -20999, ‘Cannot make more than 20 updates per month’);

END IF;

END;

总体而言,Oracle的触发器是一种非常有用的工具,可以有效地提高数据库的性能和安全性,保护数据库的完整性和一致性。理解触发器的类型和语法可以帮助开发人员更好地利用Oracle提供的强大功能,使数据库更安全和可靠。


数据运维技术 » 深入理解Oracle数据库触发器类型(oracle触发器类型)