登陆oracle用户账号密码oracle数据库语句级触发器和行级触发器的使用

1. 

行级触发器对DML语句影响的每个行执行一次。 

语句级触发器对每个DML语句执行一次,如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。 

2. 

语句级别触发器 

是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。  www.2cto.com  但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。 

例子:需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。 

 

create trigger tri_study 

 

  before insert or update or delete on zrp 

 

begin 

 

  if user not in (‘DONNY&roracle账号squo;) then 

 

  Raise_application_error(-20001, ‘You can not access to modify this table.’); 

 

  end if; 

 

end; 
 

2、 行触发器 

 

是指为受到影响的各个行激活的触发器,定义与语句触发器类似,有以下两个例外: 

 

1、 定义语句中包含FOR EACH ROW子句   www.2cto.com  

 

2、 在BEFORE……FOR EACH ROW触发器中,用户可以引用受到影响的行值。 

 

定义: 

 

create trigger tri_study 

 

  before insert or update 

 

  of department_id 

 

  on employees_copy 

 

  referencing old as old_value 

 

  new as new_value 

 

  for each row 

  www.2cto.com  

  when (new_value.department_id<>80 ) 

 

begin 

 

  :new_value.commission_pct :=0; 

 

end; 

 

 

作者 vvssonline

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。