触发器分两种
1、 语句触发器 是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、
DELETE或者组合上进行关联。但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次
。比如,无论update多少行,也只会调用一次update语句触发器。
2、 行触发器 是指为受到影响的各个行激活的触发器,定义与语句触发器类似,有以下两个例外: 1、 定义语句中包含FOR EACH ROW子句 2、 在BEFORE……FOR EACH ROW触发器中,用户可以引用受到影响的行值。
定义: create trigger biufer_employees_department_id before insert or update of department_id on employees_copy referencing old as old_value new as new_value for each row when (new_value.department_id<>80 ) begin :new_value.commission_pct :=0; end; /
Referencing 子句: 执行DML语句之前的值的默认名称是 :old ,之后的值是 :new insert 操作只有:new delete 操作只有 :old update 操作两者都有
referencing子句只是将new 和old重命名为new_value和old_value,目的是避免混淆。比如操作一个名为
new的表时。 作用不很大。
oracle 一个表上的多个触发器的执行顺序如下:
before statement trigger->before row trigger->after row trigger->after statement trigger。