- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
任务六触发器的规划与设计
一、任务目标
1掌握创建和使用触发器来实现数据有效性和完整性;2掌握创建和使用触发器来实现数据的业务逻辑;3掌握创建和使用触发器来实现数据的保护;二、教学任务
1介绍触发器的概念;2介绍触发器的触发机制;3创建带有提示信息的触发器;4创建限制取值范围约束的触发器;5创建实现用户逻辑上数据完整性触发器;6分析设计分销系统中需要的触发器6.1.1触发器的概念
触发器是一种特殊的存储过程,其特殊性在于它不需要由用户调用执行,而是当用户对表中的数据进行UPDATE、INSERT或DELETE操作时自动触发执行。触发器通常用于保证业务规则和数据完整性约束,其优点是用户可以用编程的方法来实现复杂的处理逻辑和业务规则,增强了数据完整性约束的功能。在SQLServer2005中,触发器有了更进一步的功能,在数据表(库)发生Create、Alter和Drop操作时,也会自动激活执行。6.1.2触发器的分类
在SQLServer2005中,触发器可以分为两大类:DML触发器和DDL触发器。DML触发器:DML触发器是当数据库服务器中发生数据操作语言(DataManipulationLanguage)事件时执行的存储过程。DML事件包括在指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。DML触发器又分为两类:After触发器和InsteadOf触发器。DML触发器可以查询其他表,还可以包含复杂的T-SQL语句。系统将触发器和触发它的语句作为可在触发器内回滚的单个事务对待,如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。DDL触发器:DDL触发器是当数据库服务器中发生数据定义语言(DataDefinitionLanguage)事件时执行的存储过程。这是SQLServer2005的新增功能。它与DML触发器不同的是,它不会为响应针对表或视图的UPDATE、INSERT或DELETE语句而激发,相反,它会为响应多种数据定义语言(DDL)语句而激发。这些语句主要是以CREATE、ALTER和DROP开头的语句。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。DML触发器的分类SQLServer2005的DML触发器分为两类:After触发器和InsteadOf触发器。After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用RollbackTransaction语句来回滚本次的操作。InsteadOf触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。6.1.2触发器的分类
DML触发器的工作原理在DML触发器的工作过程中,SQLServer建立和管理两个临时的虚拟表,一个是Inserted(插入)表,一个是Deleted(删除)表。这两个表是建在数据库服务器的内存中的,是由系统管理的逻辑表,而不是真正存储在数据库中的物理表。这两个特殊表可供用户读取,但是用户不能直接修改表中的数据。Inserted和Deleted两个表的结构与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。6.1.2触发器的分类
6.1.3触发器的创建
CREATETRIGGERtrigger_nameONtable_name[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT][,][DELETE][,][UPDATE]}ASSQL_statement[,…n]6.1.3触发器的创建
参数含义说明如下:CREATETRIGGER:用来触发器。trigger_name:触发器名称,触发器是对象,必须具有数据库中的唯一名称。ONtable_name:用于指定触发执行触发器的表。WithEncryption:用来加密触发器。如果使用了这个参数,该触发器将会被加密,任何人都看不到触发器的内容了。AFTER:指定触发器只有在引发触发器执行的SQL语句指定的操作都已经成功执行,并且所有的约束检查也成功完成后,才执行此触发器。这种类型的触发器称为后触发型触发器。FOR:如果只是指定FOR关键字,则AFTER为默认值。INSTEADOF:指定执行触发器而不是执行引发触发器执行的SQL语句,从
文档评论(0)