设为首页 收藏本站
查看: 578|回复: 0

[经验分享] SQL Server——触发器

[复制链接]

尚未签到

发表于 2016-10-30 06:57:50 | 显示全部楼层 |阅读模式
   在上一篇博客中我们学习总结了存储过程,今天我们学习一种特殊的存储过程——触发器。顾名思义,触发器,就是通过某个事件一触发它就会执行。现在我们还从它的概述,实现和管理三个方面来总结。
  
   一,概述:
  
   1,概念:触发器是一种特殊类型的存储过程,它在插入,删除或修改特定表中的数据时触发执行。
  通常可以执行一定的业务规则,以保持数据的完整性,检查数据的有效性,实现数据库
  管理任务和一些附加的功能。看这张图,我们会更明白些!
   DSC0000.png

  
   2,优点:a,触发器自动执行;b,可以调用存储过程;c,可以强化数据条件的约束;d,可以禁止或回滚
  违反引用完整性的更改;e,级联,并行运行;d,同表多触发器。
   3,分类:a,DML(Data Manipulation Language,数据操纵语言)触发器,是在执行数据操作语言事件被
  调用时触发的,其中insert,update和delete,alter等类型。
  b,DLL(Dynamic Link Library,动态链接库)触发器,是由数据定义事件引起的,包括:create
  ,alter和drop语句。
  
   二,实现触发器:
  
   1,创建:a,MDL触发器
  
  T-SQL语法:
  create trigger [schema_name.] trigger_name on{table|view}
  [with <dml_trigger_option>[,……n]]
  {for |after |instead of } {[insert],[update],[delete]} [with append]
  [not for replication] as sql_statement[,……n]
   语法说明:schema_name DML触发器所属架构的名称;Trigger_name 触发器的名称;
  <dml_trigger_option>参数项,encryption和execute as选项;with append
   指定应该再添加一个现有类型的触发器。Not for replication ,表示当触
   及触发器时,不应执行触发器。
  
  b,DLL触发器
  
  T-SQL语法:
  create trigger_name on {allserver|database}
  [with <dll_trigger_option>[,……n]]
  {for|after} {event_type|event_group}[,……n]
  as sql_statement[,……n]
   说明:all_server|database,DDL触发器响应的范围,当前服务器或当前数据库。
   event_type|event_group,T-SQL语言事件的名称或事件组的名称。
  
  
   2,查看:a,查看触发器的文本信息sp_helptext
  b,查看触发器的相关性信息sp_depends
  c,一般信息:sp_help
   这里查看触发器和上篇博客中查看存储过程一模一样,因为它就是特殊的存储过程。
  
  
   三,管理触发器
  
   1,修改:这里修改两种触发器就是将创建它的语法中的create改成alter既可以。
   2,删除:drop trigger
   3,启用和禁用:alter table语句用于启用和禁用触发器
  语法:alter table table {enable|disable}trigger,其中enable为启用,disable为禁用
   4,使用嵌套触发器:利用sp_configure
  语法:sp_configure [[@configname=]'name] [,[@configvalue=]'value']
  说明:@configname:配置选项的名称。
  @configvalue当为0时为禁止嵌套,1为允许嵌套
   5,建立列级触发器:使用update来建立
  语法:if update (colum1) and|or update(column2)]
   6,递归触发器:自行调用自身为递归触发器。其中又分为直接递归和间接递归。
  
   当然这些操作都可以通过MicrosoftSQL Server Management Studio来直接设置,他跟存储过程中很多东西相同,我们可以通过实践来学习很多。
  
   触发器是数据库中比较高级的应用,灵活使用触发器可以大大增强应用程序的健壮性,数据库的可恢复性和数据库的可管理性。当然,只要我们能够灵活的运用,我们可以利用它实现一些复杂的功能,简化开发步骤,降低开发成本,增加开发效率,提高数据库的可靠性。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293083-1-1.html 上篇帖子: sql server 隔离级别 下篇帖子: [sql server] SQL Server 2000 XML之七种兵器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表