研究Oracle中各种触发器类型的应用(oracle触发器类型)
Oracle中有四种触发器类型:行级触发器、表级触发器、BEFORE触发器和AFTER触发器.它们在Oracle数据库中的应用比较广泛。
行级触发器(Row Level Triggers)发生在表行上,只要改变表中一行,就会触发行级触发器。它们可以用来更新或删除多个表行,也可以修改当前查询的表行。例如:
CREATE OR REPLACE TRIGGER trig_items_insert
BEFORE INSERT ON items
FOR EACH ROW
BEGIN
IF inserting THEN
DBMS_OUTPUT.PUT_LINE(‘像亚马逊一样,在items表上插入行’);
END IF;
END;
/
表级触发器(Table-Level Triggers)发生在表本身上,只要改变表内容,就会触发表级触发器。它们可以用来更新或删除多个表行,也可以查询多个表行。例如:
CREATE OR REPLACE TRIGGER trig_dept_delete
AFTER DELETE ON dept
BEGIN
DBMS_OUTPUT.PUT_LINE(‘在部门表上删除行’);
END;
/
BEFORE触发器(Before Triggers)发生在所有操作(插入,更新,删除)执行前。它们可以用来验证数据的有效性,确保数据的一致性。例如:
CREATE OR REPLACE TRIGGER trig_items_update
BEFORE UPDATE OF desc_text ON items
FOR EACH ROW
BEGIN
IF :OLD.DESC_TEXT != :NEW.DESC_TEXT THEN
DBMS_OUTPUT.PUT_LINE(‘验证items表中items_desc字段的更新’);
END IF;
END;
/
AFTER触发器(After Triggers)发生在所有操作(插入,更新,删除)执行后。它们可以用来跟踪表中的更改,或在表中插入行。例如:
CREATE OR REPLACE TRIGGER trig_items_delete
AFTER DELETE ON items
FOR EACH ROW
BEGIN
IF deleting THEN
DBMS_OUTPUT.PUT_LINE(‘在items表上跟踪删除行’);
END IF;
END;
/
以上四种触发器类型,能够满足Oracle数据库中的大多数需求,使得系统的数据操作更加方便,也更有事务性。