zoukankan      html  css  js  c++  java
  • oracle数据库语句级触发器和行级触发器的使用

    1. 行级触发器对DML语句影响的每个行执行一次,触发器表(如:您的定义触发器的emp表)变化一个记录(I、D、U)就执行一次。
      语句级触发器对每个DML语句执行一次,完成一次“事务”触发一次。 如果在TABLE表中插入的数据为500行,那么这个表上的语句级触发器只执行一次,而行级的触发器就要执行500次了。

    2. 语句级别触发器
      是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。 但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。
      例子:需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。
    create trigger tri_study 
    
      before insert or update or delete on zrp 
    
    begin 
    
      if user not in (‘DONNY’) then 
    
      Raise_application_error(-20001, ‘You can not access to modify this table.’); 
    
      end if; 
    
    end; 
    

    3、 行触发器

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

    1、 定义语句中包含FOR EACH ROW子句

    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; 
  • 相关阅读:
    多年收集的一些稀有软件1
    Object-C中使用NSKeyedArchiver归档(将各种类型的对象存储到文件中)
    转-- iOS 30多个iOS常用动画,带详细注释
    转-ios设备唯一标识获取策略
    微信授权
    Windows服务Demo
    查询某个时间段在另一个时间段里面的时间
    微服务官方文档链接
    c# html 转word
    Unreal4 入门(配置)
  • 原文地址:https://www.cnblogs.com/lllini/p/11955291.html
Copyright © 2011-2022 走看看