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

分类: 数据库相关

sqlserver 触发器 怎么获取更新前的值相关推荐

  1. layUI数据表格可编辑表格单元格值修改之后获取修改前的值

    table.on('edit(data_table)', function(obj){ //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值&q ...

  2. oracle更新前触发器,Oracle之前更新触发器

    本Oracle教程解释了如何在Oracle中创建Before Update触发器的语法和示例. Before Update触发器表示Oracle将在执行更新操作之前触发此触发器. 语法 在Oracle ...

  3. 基于SqlServer环境下创建触发器、级联更新(删除、修改)

    SQLserver 环境下触发器以及级联更新与删除该文触发器是根据本作者对中学学籍管理系统项目数据库需求分析后得出,已经实验论证完毕,以下是实例的创建以及触发器的实现过程,本作者的百度文库中目录下可以 ...

  4. sqlserver 触发器实例代码

    何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , Update , D ...

  5. SqlServer触发器使用整理

    一.触发器的使用场景.优缺点 1.强制业务规则和数据完整性. SqlServer中提供了2中方案,约束(主键约束.外键约束.Not Null约束.唯一约束以及检查约束)和触发器 触发器,可以编写T-s ...

  6. 一次SQLSERVER触发器编写感悟

    一次SQLSERVER触发器编写感悟 背景:BOSS须要我写一个工厂採集端到服务器端的数据同步触发器,数据库採用的是sqlserver2008 需求:将多台採集机的数据同步到server中,假设採集端 ...

  7. mysql 获取 row的id_转: MYSQL获取更新行的主键ID

    在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时 ...

  8. vue 子级拿值_Vue 父组件主动获取子组件的值,子组件主动获取父组件的值

    父组件主动获取子组件的值 1. 在调用子组件的时候定义一个ref-> ref="header" 2. 在父组件中通过this.$refs.header.属性,调用子组件的属性 ...

  9. js基础总结——js 获取元素节点、js 绑定onclick事件、js 获取属性 修改属性值、js 获取子元素、js 改变css样式

    参考书籍:<JavaScript DOM编程艺术 第2版> 本博客代码的测试页面是:https://www.layui.com/ js dom操作 js 获取元素节点 一份document ...

最新文章

  1. 景区ota常遇问题_景区票务管理系统能给景区带来销售业绩,你知道这些功能ma?...
  2. 第一章 C++ primer Plus
  3. 《那些年啊,那些事——一个程序员的奋斗史》——44
  4. 18条工作感想:不要不情愿地工作
  5. ubuntu 安装deb程序文件失败的解决方法
  6. 华为系统里的计算机,一个屏幕操作两个系统 让你的手机装进华为MateBook 14电脑里...
  7. 四十六 常用内建模块 itertools
  8. ASV2011英文绿色版
  9. 自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
  10. Android签名总结
  11. C语言写程序注意,单片机C语言编程应注意的若干问题
  12. hdu 1429 胜利大逃亡(续)
  13. HTTP--header
  14. stm8 硬件SPI
  15. 使用vnc软件将kindle作为显示屏。
  16. 「镁客早报」库克抨击高通,表明不可能在法律纠纷中达成和解;传闻无人驾驶公司Aurora融资20亿美元...
  17. 江南大学计算机水平怎么样,江南大学在211中什么水平?无锡人眼中的江南大学怎么样?...
  18. 各厂商接入交换机通过ACL限制端口应用的配置信息
  19. c语言switch和break用法,c语言里面你不知道的break与switch,contiune的用法
  20. 隧道精确定位系统全方位保障隧道施工安全

热门文章

  1. charles+夜神模拟器抓包
  2. 两极相通——浅析最大—最小定理在信息学竞赛中的应用
  3. 关于pdfplumber和pdfminer不兼容的问题解决方案
  4. 【接口测试】常见的测试数据准备方法
  5. qsql 关联_PostgreqSQL--从认识到上手
  6. 智慧校园消费门禁一卡通管理平台系统建设
  7. 适合有一些Java基础的实战项目
  8. 常见的一些:文件类型
  9. JAVA写的网页爬虫爬取必应词典的词汇音标
  10. 【机器学习】机器学习之支持向量机(SVM)