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触发器类型及其应用的展示就介绍到这里。