SQL server触发器学习记录
作为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