作为C#程序员,我工作内容基本就是winform,wpf,asp.net。sql接触的比较少,今天突然来了一个ticket要我修改触发器脚本....只会select*的我顿感迷茫。。。

需求描述:aspnet_Users表有三个触发器INSERT,DELETE,UPDATE,每个触发器的执行结果都是对表:aspnet_UsersAuditing 执行insert操作。结果就是aspnet_UsersAuditing的数据量增长的特别快、导致备份失败。

现在需要更改触发器的条件:

The trigger on this table should ignore updates if only LastActivityDate changed.

也就是说,当只有字段:LastActivityDate 发生变化时,不需要执行触发器。

解决过程:

下图是目前的UPDATE触发器sql。根据需求,我认为需要修改的只有UPDATE触发器,因为insert和delete并不会引起only  LastActivityDate change。

看了几篇博客,对触发器的语法有了大概的了解。但是对except、deleted、intserted关键字很陌生。

EXCEPT:可以理解为B在A中的补集。或者根据单词直译,从A中减掉B。

(SELECT * FROM A{1,1,2,3}) EXCEPT (SELECT * FROM B{1,2,5})结果:3。
顺便也查了一下INTERSECT UNION

INTERSECT:交集

UNION:全集/合集

DELETED:用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

INSERTED:用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。

1.插入操作(Insert)

Inserted表有数据,Deleted表无数据

2.删除操作(Delete) 
Inserted表无数据,Deleted表有数据

3.更新操作(Update) 
Inserted表有数据(新数据),Deleted表有数据(旧数据)

经过上述学习,现在基本就能看懂这个update触发器了。接下来就是要增加一个触发条件,必须有LastActivityDate 以外的字段发生变化时,才执行触发器。

第一个想法是把LastActivityDate字段从这段sql里去掉。看起来应该是可以达到效果的,而且改动还很小。

但有一点需要注意,更新触发器需要drop原来的触发器,再create修改后的触发器。

我先去试试去。

最新文章

  1. monkey工具使用中遇到的问题之二:尝试了各种方法通过adb都无法找到设备
  2. 【BZOJ-1597】土地购买 DP + 斜率优化
  3. python requests
  4. 设置让ASP.NET管道接收所有类型的请求
  5. HDU4870_Rating_双号从零单排_高斯消元求期望
  6. 双日历插件--jq datepicker时间范围选择
  7. rlwrap(在sqlplus下使用上下键)
  8. iOS中常用的第三方
  9. Xcode 常用快捷键及代码自动排版
  10. 为大型数据文件每行只能产生id
  11. c# 自定义数据类型
  12. Go语言的数组
  13. mui-选项卡+scroll滚动
  14. vue常考面试题
  15. JavaWeb(一)-Servlet中的Config和Context
  16. 【转】Xposed出现 java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
  17. js中的arguments用法
  18. git worktree 是什么及其使用场景
  19. 买不到的数目|2018年蓝桥杯A组题解析第八题-fishers
  20. 如何通过创建切片器窗格节省PowerBI报告空间

热门文章

  1. 微信小程序~页面跳转和路由
  2. CSP-S 2019提高组训练 服务器需求
  3. charAt,charCode,fromCharCode区别
  4. Incorrect integer value: '' for column 'id' at row 1 错误解决办法
  5. mybatis的注意事项一
  6. Jmeter扩展自定义函数
  7. BZOJ 4212: 神牛的养成计划 可持久化trie+trie
  8. 46、Spark SQL工作原理剖析以及性能优化
  9. Cocos CreatorUI系统下
  10. Apache2 服务配置 ubuntu16.04 + django1.11