zoukankan      html  css  js  c++  java
  • sqlserver 触发器 怎么获取更新前的值

    更新的动作你可以分2步理解,先delete ,再insert
    所以,前的值在 deleted里
      后的值在 inserted里

    create trigger t_ATDATEState_update
    on list
    for update
    as
    if update(ATDATEState)
    begin
     declare @b_ATDATEState nvarchar(200)  --修改之前的
     declare @S_ATDATEState nVARCHAR(200)  --修改之后的
     declare @S_id INT
     
     SELECT @S_ATDATEState= ATDATEState FROM INSERTED --从更新后的副本表(临时表)里面 获得要修改后的状态
     
     select @S_id=id,@b_ATDATEState=ATDATEState from deleted  --从之前删掉的临时表里面获取原来的值
     
     if @S_ATDATEState is null
     begin
      set @S_ATDATEState='0'
     end
     if @b_ATDATEState is null
     begin
      set @b_ATDATEState='0'
     end
      --如果修改前为2,3,4  降低了状态 向下修改  并且 修改后的状态和修改前不一样 
     if ((convert(int,@b_ATDATEState)>=2  and convert(int,@S_ATDATEState)<convert(int,@b_ATDATEState)) and (@b_ATDATEState<>@S_ATDATEState))
      begin
       insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type)
       values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态不正常,向下降低了')
      end
     if(convert(int,@b_ATDATEState)<2) and ( convert(int,@S_ATDATEState)>=2)
      begin
       insert into dbo.operate(c_id,before_ATDATEState,after_ATDATEState,o_ip,o_type)
       values(@S_id,@b_ATDATEState,@S_ATDATEState,'','状态升高')
      end
    end

  • 相关阅读:
    基于redis的分布式锁实现方案
    nginx 配置文件详解
    Linux 下安装Nginx
    Nginx简介
    Spring Boot 整合 Spring Security 示例实现前后分离权限注解 + JWT 登录认证
    idea2020.1版本下载安装与激活
    Cloud Alibaba --Nacos
    spring Cloud Alibaba 简介
    Eclipse中SVN更改连接用户
    Win7(64bit)搭建SVN
  • 原文地址:https://www.cnblogs.com/naniannayue/p/2024830.html
Copyright © 2011-2022 走看看