实验九触发器的创建和使用

实验九触发器的创建和使用

ID:34761396

大小:103.68 KB

页数:7页

时间:2019-03-10

实验九触发器的创建和使用_第1页
实验九触发器的创建和使用_第2页
实验九触发器的创建和使用_第3页
实验九触发器的创建和使用_第4页
实验九触发器的创建和使用_第5页
资源描述:

《实验九触发器的创建和使用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验九触发器的创建和使用9.1概述9.1.1任务一理解触发器的概念触发器与存储过程是SQLServer数据库中的两类数据库对象,触发器是一种特殊类型的存储过程。虽然它们都是由Transact-SQL语句编写而成,但是两者有不同之处:存储过程是由用户根据需要调用执行,而触发器则是由某个数据修改动作触发而自动执行的。另外,存储过程不依赖于某个表而单独存在,而触发器则必须依赖于一个表或视图。9.1.2任务二理解触发器的优点触发器在商业上的用途很广,对于企业来说,触发器能够使运营过程自动化。例如在库存系统中,更新触发器能够探测到存货水平在何时达到一个特定的标准并在达到标准后自动发送一条采购信息给供应

2、商。触发器还能够扩展SQLServer约束的逻辑完整性、默认值和规则。除此之外,触发器还有其他许多功能:1、相关表进行级联更改:触发器能够探测到数据库内的数据变更并自动级联影响相关表的数据,我们对某一个表的数据更新,引起该表的触发器执行,更新第2张的数据,从而引起第2个表上的触发器执行,影响第3个表的数据,实现级联更新。2、强化约束:触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。3、跟踪变化:对敏感数据的更改,可使用触发器实现详细、细致的日志记录。9.1.3任务三理解触发器的类型对应数据操作的三种基本类型:INSERT、D

3、ELETE和UPDATE,分别有三种不同类型的触发器,在执行相应的操作时触发。一个表可以同时有多个触发器,这些触发器可以是不同类型,也可以是同一类型的。从执行时间方面来看,SQLServer有两类触发器ØAFTER:触发器在触发它们的语句完成后执行。如果该语句因错误而失败,触发器将不会执行。只能为表指定该触发器,同一张数据表中可以为每个出发操作(INSERT、DELETE和UPDATE)创建多个AFTER触发器。如果一个表上有多个AFTER触发器,可使用SP_SETTRIGGERORDER定义哪个AFTER触发器最先激发,哪个最后激发。除第一个和最后一个触发器外,所有其他的AFTER触发器的

4、加分顺序不确定,并且无法控制。ØInsteadof:该触发器代替触发操作执行。可在表或视图上定义Insteadof触发器,只能为每个触发操作(INSERT、DELETE和UPDATE)定义一个Insteadof触发器。Insteadof触发器可用于对INSERT和UPDATE语句提供的数据执行增强的完整性检查,Insteadof触发器还运行指定某些操作,是一般不支持更新的视图可以被更新。AFTER和INSTEADOF触发器的功能比较功能AFTER触发器INSTEADOF触发器适用范围表表和视图可定义的数量每个操作(INSERT、DELETE和UPDATE)可定义多个每个操作(INSERT、D

5、ELETE和UPDATE)只定义一个执行时机晚于约束处理,insert表和deleted表创建时触发动作早于约束处理,insert表和deleted表创建之后触发动作执行顺序可指定第一个和最后一个执行不可用不允许允许在insert表和deleted表引用text、ntext、image类型9.1创建触发器创建触发器之前需要注意:Ø触发器为数据库对象,其命名规则应与标识符命名规则一致。ØCREATETRIGGER必须是批处理中的第一天语句。Ø只能在当前的数据库中创建,但可以引用其他数据库的对象。Ø不能在临时表或系统表上创建触发器。Ø在触发器内部SQL语句与导致该触发器执行的SQL语句属于同一事

6、务,因此,如触发器执行不成功,则整个(INSERT、DELETE和UPDATE)SQL将回滚。Ø在同一条CREATETRIGGER语句中,可以为多种用户操作(如INSERT和UPDATE)定义相同的触发器操作。Ø如果一个表的外键在DELETE/UPDATE操作上定义了级联,则不能在该表上定义INSTEADOFDELETE/UPDATE触发器。可使用企业管理器或者CREATETRIGGER语句创建触发器9.1.1任务一使用企业管理器创建触发器9.1.2任务二使用Transact-SQL语句创建触发器CREATETRIGGERtrigger_nameON{table

7、view}[WITHENCR

8、YPTION]{{{FOR

9、AFTER

10、INSTEADOF}{[INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]AS[{IFUPDATE(column)[{AND

11、OR}UPDATE(column)][...n]}]sql_statement[...n]}}vtrigger_name:是触发器的名称。vTable

12、view:是在其上执行触发器的表或视图。vA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。