欢迎来到天天文库
浏览记录
ID:45858831
大小:80.00 KB
页数:30页
时间:2019-11-18
《SQLServer2005数据库任务化教程 任务6 触发器的规划与设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLServer2005数据库任务化教程梁竞敏黄华林宋广科等编著中国水利水电出版社任务六触发器的规划与设计一、任务目标1掌握创建和使用触发器来实现数据有效性和完整性;2掌握创建和使用触发器来实现数据的业务逻辑;3掌握创建和使用触发器来实现数据的保护;二、教学任务1介绍触发器的概念;2介绍触发器的触发机制;3创建带有提示信息的触发器;4创建限制取值范围约束的触发器;5创建实现用户逻辑上数据完整性触发器;6分析设计分销系统中需要的触发器6.1.1触发器的概念触发器是一种特殊的存储过程,其特殊性在于它不需要由用户调用执行,而是当用户对表中的数据进行UPDATE、I
2、NSERT或DELETE操作时自动触发执行。触发器通常用于保证业务规则和数据完整性约束,其优点是用户可以用编程的方法来实现复杂的处理逻辑和业务规则,增强了数据完整性约束的功能。在SQLServer2005中,触发器有了更进一步的功能,在数据表(库)发生Create、Alter和Drop操作时,也会自动激活执行。6.1.2触发器的分类在SQLServer2005中,触发器可以分为两大类:DML触发器和DDL触发器。DML触发器:DML触发器是当数据库服务器中发生数据操作语言(DataManipulationLanguage)事件时执行的存储过程。DML事件包括在
3、指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。DML触发器又分为两类:After触发器和InsteadOf触发器。DML触发器可以查询其他表,还可以包含复杂的T-SQL语句。系统将触发器和触发它的语句作为可在触发器内回滚的单个事务对待,如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。DDL触发器:DDL触发器是当数据库服务器中发生数据定义语言(DataDefinitionLanguage)事件时执行的存储过程。这是SQLServer2005的新增功能。它与DML触发器不同的是,它不会为响应针对表或视图的UPDATE、
4、INSERT或DELETE语句而激发,相反,它会为响应多种数据定义语言(DDL)语句而激发。这些语句主要是以CREATE、ALTER和DROP开头的语句。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。DML触发器的分类SQLServer2005的DML触发器分为两类:After触发器和InsteadOf触发器。After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用RollbackTransaction语句来回滚本次的操作。Inst
5、eadOf触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。6.1.2触发器的分类DML触发器的工作原理在DML触发器的工作过程中,SQLServer建立和管理两个临时的虚拟表,一个是Inserted(插入)表,一个是Deleted(删除)表。这两个表是建在数据库服务器的内存中的,是由系统管理的逻辑表,而不是真正存储在数据库中的物理表。这两个特殊表可供用户读取,但是用户不能直接修改表中的数据。Inserted和Deleted两个表的结
6、构与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。6.1.2触发器的分类激活触发器的SQL语句Inserted表Deleted表INSERT所要添加的行空UPDATE新的行旧的行DELETE空删除的行6.1.3触发器的创建CREATETRIGGERtrigger_nameONtable_name[WITHENCRYPTION]{FOR
7、AFTER
8、INSTEADOF}{[INSERT][,][DELETE][,][UPDATE]}ASSQL_statement[,…n]6.1.3触发器的创建参数含义说明如下:CREAT
9、ETRIGGER:用来触发器。trigger_name:触发器名称,触发器是对象,必须具有数据库中的唯一名称。ONtable_name:用于指定触发执行触发器的表。WithEncryption:用来加密触发器。如果使用了这个参数,该触发器将会被加密,任何人都看不到触发器的内容了。AFTER:指定触发器只有在引发触发器执行的SQL语句指定的操作都已经成功执行,并且所有的约束检查也成功完成后,才执行此触发器。这种类型的触发器称为后触发型触发器。FOR:如果只是指定FOR关键字,则AFTER为默认值。INSTEADOF:指定执行触发器而不是执行引发触发器执行的SQL
10、语句,从而替代触发语句的操作。这种触发
此文档下载收益归作者所有