zoukankan      html  css  js  c++  java
  • 触发器

    在新增时,没有Deleted这个表,只有Inserted表  
      在删除时,没有Inserted这个表,只有Deleted表  
      只有在Update时,才有这两个表  
      所以要看你的需要决定要建几个触发器



    在触发器中,有两个特殊的逻辑表:  
      inserted   和   deleted  
       
      这两个表是系统自动生成的.  
      inserted中记录的是新增或修改后的内容  
      deleted中记录的是删除或修改前的内容   
       
    例如有如下表:  
      a  
      id,name  
      1     aa  
      2     bb  
       
      1.新增  
      执行:insert   into   a(id,name)   values(3,'cc')  
      这时,在触发器中  
      inserted表的内容就是:  
      3   cc  
      deleted表内容为空  
       
      2.修改  
      执行:update   a   set   name=name+'1'   where   id<3  
      这时,在触发器中  
      inserted表的内容就是:  
      1   aa1  
      2   bb1  
      deleted表内容为空  
      1   aa  
      2   bb  
       
      3.删除  
      执行:delete   from   a   where   id=2  
      这时,在触发器中  
      inserted表的内容就是空  
      deleted表内容为空  
      2   bb   
        
      所以你的触发器可以这样写:  
      方法1  
      create   trigger   aa   on   你的表  
      for   insert,delete,update  
      if   exists(select   *   from   inserted)  
          if   exists(select   *   from   deleted)  
                .......                   --记录操作为修改的处理语句  
          else  
          ..........                   --记录操作为新增的处理语句  
      else  
          .........                     --记录操作为删除的处理语句  
       
       
      方法2.分开写  
      create   trigger   aa   on   你的表  
      for   insert  
      as    
      ........                 --记录操作为新增的处理语句  
       
      create   trigger   aa   on   你的表  
      for   update  
      as    
      ........                 --记录操作为修改的处理语句  
       
      create   trigger   aa   on   你的表  
      for   delete  
      as    
      ........                 --记录操作为删除的处理语句  


    deleted和inserted是系统自动生成的两个临时表  
       
      deleted存删除操作前的记录  
       
      inserted存插入的数据记录   
       
  • 相关阅读:
    1.5寻找倒数第k个元素
    MySQL基础之分组函数
    MySQL基础之单行函数
    MySQL基础查询(一)
    gem install redis Fetching: redis-4.1.3.gem (100%) ERROR: Error installing redis: redis requires Ruby version >= 2.3.0.
    SQL语句
    使用kill无法杀死mysql进程
    Ansible学习笔记
    rsync报错:rsync: chgrp ".hejian.txt.D1juHb" (in backup) failed: Operation not permitted (1)
    Linux磁盘管理
  • 原文地址:https://www.cnblogs.com/panzhilei/p/783808.html
Copyright © 2011-2022 走看看