• 特殊存储过程——触发器Trigger


    触发器类型

    insert 触发器
    delete 触发器
    update 触发器

    Inserted和Deleted两个临时表的作用

    Inserted:对于插入记录操作来说,插入表里存放的是要插入的数据;对于更新记录操作来说,插入表里存放的是要更新的记录。
    Deleted:对于更新记录操作来说,删除表里存放的是被更新记录;对于删除记录操作来说,删除表里存入的是被删除的旧记录。

     
    1

    参考:http://www.cnblogs.com/liushuijinger/archive/2012/06/10/2543941.html

    触发器写法

    CREATE TRIGGER  Trigger_Name --触发器名,在一个数据库中触发器名是唯一的。
       ON  Table_Name | View_Name --触发器所在的表或者视图。
       AFTER(FOR)|Instead Of  INSERT,DELETE,UPDATE --定义成AFTER或Instead Of类型的触发器。
       --AFTER跟FOR相同,不可在视图上定义AFTER触发器
       -- 后面是触发器被触发的条件,最少有一个,可以邮多个。如果有多个用逗号分开,顺序无要求。
    AS --触发器要执行的操作
    BEGIN
       --BEGIN跟END组成一个代码块,可以写也可以不写,如果触发器中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。
    END
    GO --GO就代表结操作完毕
    

    例子

    create trigger trig_insert_student
    on student for insert
    as
        declare @number int
        -- 从inserted临时表中获取记录值
        select @number=StudentNumber
               from inserted    --临时表inserted    
        update student set Name='触发器修改'
        where StudentNumber=@number
    go
    create trigger trig_insert_transInfo
    on transInfo for insert
    as
        declare @_transType   char(4),  --定义变量
                @_transMoney  money,
                @_cardID      char(10),
                @balance      money     --所剩余额
    
        -- 从inserted临时表中获取记录值
        select @_transType = transType,
               @_transMoney = transMoney,
               @_cardID = cardID  
               from inserted    --临时表inserted    
    
        if(@_transType = '支取')
           update bank set currentMoney=currentMoney-@_transMoney
                  where cardID = @_cardID;
        else 
           update bank set currentMoney=currentMoney+@_transMoney
                  where cardID = @_cardID;
    
        --显示交易金额
        print '交易成功! 交易金额:'
              + convert(varchar(20),@_transMoney)
    
        --显示所剩余额
        select @balance = currentMoney from bank 
               where cardId = @_cardID
    
        print '卡号:'+@_cardID 
              + ' 余额:'+convert(varchar(20),@balance);
    go
    

    参考:http://www.cnblogs.com/xugang/archive/2010/02/20/1669619.html

  • 相关阅读:
    了解Cgroup资源配置方法
    了解Harbor私有仓库创建
    Docker私有部署和管理
    Docker构建镜像实例
    Docker镜像的构建方式
    Docker基本管理
    将列表的元素去重
    python打印出txt中的汉字
    join字符串拼接
    %s占位符 format
  • 原文地址:https://www.cnblogs.com/Lulus/p/7874327.html
Copyright © 2020-2023  润新知