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; 
  • 相关阅读:
    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    Python学习之字典详解
    IDEA启动服务慢的问题处理
    IDEA部署Tomcat应用所有接口中文乱码
    为什么选择微信公众号而不是小程序的考虑要素
    Vue基础及脚手架环境搭建
    VSCode集成Git代码管理
    VSCode开发工具下载
    U盘装系统:安装GHOST Win7系统教程
    前端资源管理工具sourcetree
  • 原文地址:https://www.cnblogs.com/lllini/p/11955291.html
Copyright © 2011-2022 走看看