提示
纵使触发程序的执行效能并不是问题的重点所在(当它和资料指针一起使用时),您应该尽可能的使用较低阶的方式建置规则。假如您的商业规则可以利用CHECK条件约束建置时,您就不应该使用触发程序;而如果您可以使用UNIQUE条件约束时,您就不应该使用CHECK条件约束。
INSTEAD OF触发程序会取代其所定义的命令被触发。就像AFTER触发程序一样,您可以在INSERT、UPDATE或DELETE命令中定义INSTEAD OF触发程序。单一的触发程序可以套用多重命令的任意组合。
与AFTER触发程序不同的是,您可以针对资料表和检视表来建立INSTEAD OF触发程序,但是在资料表或检视表上的每一个动作,您只能建立单一个INSTEAD OF触发程序。
--实例3------------------------ --创建触发器,它记录表的删除数据 --创建表 CREATE TABLE employee ( id VARCHAR2(4) NOT NULL, name VARCHAR2(15) NOT NULL, age NUMBER(2) NOT NULL, sex CHAR NOT NULL ); DESC employee; --插入数据 INSERT INTO employee VALUES('e101','zhao',23,'M'); INSERT INTO employee VALUES('e102','jian',21,'F'); --创建记录表 CREATE TABLE old_employee AS SELECT * FROM employee; DESC old_employee; --创建触发器 CREATE OR REPLACE TRIGGER tig_old_emp AFTER DELETE ON employee -- FOR EACH ROW --语句级触发,即每一行触发一次 BEGIN INSERT INTO old_employee VALUES(:old.id,:old.name,:old.age,:old.sex); --:old代表旧值 END; / --下面进行测试 DELETE employee; SELECT * FROM old_employee;
http://roobo.blog.163.com/blog/static/7735362007103102346444/