Oracle触发器:类型及其应用展示(oracle触发器类型)

Oracle数据库中触发器是一种非常重要的数据库技术,可以自动执行相关操作,触发器可帮助实现基于表内以及表间数据一致性,有效进行数据级别的完整性控制,下面就来展示Oracle触发器的类型及其应用的展示。

Oracle数据库中的触发器类型分为表触发器、行触发器,以及允许用户定义的触发器。

表触发器,当对表中的数据进行 INSERT,UPDATE,DELETE 操作时,表触发器就会触发,表触发器可以保存多个操作,每个触发器都有一个统一的结构,该结构可以捕获 INSERT,UPDATE,或 DELETE 传入的表的操作,示例如下:

CREATE OR REPLACE TRIGGER MyTrigger

BEFORE INSERT ON Products

FOR EACH ROW

DECLARE

tmp NUMBER(10);

BEGIN

SELECT id INTO tmp FROM Products WHERE name = :NEW.name;

IF tmp IS NOT NULL THEN

RAISE_APPLICATION_ERROR(-20000, ‘Product already exists!’);

END IF;

END;

/

行触发器,行触发器的结构与表触发器的结构大体相同,但是它是针对每一行数据进行触发的,由于它是针对每一行数据处理任务,它主要用来实现复杂且细致的数据一致性,它可以捕获每一行 INSERT,UPDATE,或 DELETE 传入的表的操作,部分示例如下:

CREATE OR REPLACE Trigger MyTrigger

BEFORE INSERT OR UPDATE OR DELETE

ON Department

FOR EACH ROW

BEGIN

IF INSERTING OR UPDATING THEN

IF :NEW.Name IS NULL THEN

RAISE_APPLICATION_ERROR(-20000, ‘Must enter a “Name” value!’);

END IF;

END IF;

END;

/

用户定义触发器,在Oracle中,用户自定义触发器也用得很多,通过定义一个独立的触发器,用户可以可能会使用存储过程或函数作为用户触发器的功能组件,示例如下:

CREATE OR REPLACE Trigger MyTrigger

AFTER INSERT ON Products

FOR EACH ROW

BEGIN

Update_Total_Count; — 调用存储过程

END;

/

在Oracle数据库中,触发器可以用来自动执行一些重要的操作,实现基于表内数据和表间数据的一致性,有效地进行数据级别的完整性控制,也可以实现业务上的数据校验,避免数据不正确造成不可控的损失,Oracle触发器类型及其应用的展示就介绍到这里。


数据运维技术 » Oracle触发器:类型及其应用展示(oracle触发器类型)