- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 触发器 在管理一些大型的论坛时,如果一旦有新用户注册,想立刻知道该用户的信息和用户所发的帖子,这时候就可以用到数据库中一个新的工具——触发器,通过触发器来实现该功能。本章主要涉及到的知识点如下。 详细地了解触发器,对它的工作原理、优点、种类有所认识。 学会用可视化的方式来创建触发器。 掌握对触发器的管理,包括修改、删除、启用和禁用; 了解一些使用触发器中经常出现的问题,在使用中避免类似的错误发生。 使用系统存储过程查看触发器。 9.1 什么是触发器 触发器是数据库应用中的重要工具,它的使用很广泛,那何为触发器?为什么要使用触发器?其有什么优点?这些问题都会在本节中介绍到,下面带着这些问题来学习本节的内容。 9.1.1 触发器的作用 触发器是一种特殊的存储过程,当在表(视图)中插入、更新、删除记录时,触发一个或一系列T-SQL语句,也就是对某一个表(视图)的一定的操作,触发某种条件,从而执行的一段程序。触发器和存储过程相比较,存储过程是可以通过存储过程名称而被直接调用,而触发器则是通过事件触发执行,它的作用是为数据库提供了有效的监控和处理能力,能够确保数据的完整性,即它也是一种确保数据完整性的有效方式。 9.1.2 触发器的种类 SQL Server中主要使用两种类型的触发器:after触发器和instead of触发器。 after触发器 instead of触发器 9.1.3 触发器的工作原理 上边触发器的概念只能是一个笼统的认识,那到底触发器是怎么实现的,它的工作原理是什么呢?每个触发器有两个特殊的表:插入表和删除表。这两个表是逻辑表,并且它们是由系统管理的,存储在内存中,不是存储在数据库中,因此不允许用户直接对其修改,它们是动态驻留在内存中的,当触发器工作完成,这两个表也被删除。这两个表主要保存因用户操作而被影响到的原数据值或新数据值。 9.2 使用SQL Server Management Studio管理器创建触发器 在StudentDetails中建立一个触发器,当向表中插入一条记录时,检查该记录中的学号是否存在于表Student中,如果存在就插入数据,否则就不插入数据。创建触发器可以在SQL Server Management Studio管理器中创建,或者是使用T-SQL语言来创建。 9.3 管理触发器 建立好触发器后,需要对它进行管理,比如需要改动触发器或者某触发器不再有用时,就应该知道怎么来修改和删除触发器。如上边举的instead of触发器的例子,在数据库中没有什么实际价值,需要删除掉,不然会造成数据库不能使用。 9.3.1 修改触发器 修改触发器的语法格式和创建触发器的语法类似,在前边也介绍到了很多的数据库对象的修改语法格式,如存储过程、视图等。它们的修改语法同创建语法也类似,这里就不介绍修改触发器的语法格式了。 9.3.2 禁用和启用触发器 有些时候,大量地导入数据或者删除数据时,有很多的触发器存在,在操作时会触发这些触发器,降低了效率,并且可能会导致操作失败,因此需要禁用触发器。 说明:默认情况是创建触发器后会自动启用触发器。 禁用触发器并没有删除该触发器,只是临时不用。在SQL Server Management Studio管理器中可以直接禁用。 9.3.3 删除触发器 在SQL Server Management Studio管理器删除触发器时,右击该触发器节点,在弹出的快捷菜单中选择【删除】命令,在弹出的对话框中,直接单击【确定】按钮就可以了。 9.4 使用触发器遇到的问题 在建立和使用触发器的过程中,用户会遇到一些意想不到的问题,或者是出现有些不理解的地方,读者刚学习可能有很多的困惑,这是很正常的现象,只有出现了困惑,再来解决这些困惑,才会有提高,本节说说一些常见的问题。 9.4.1 create trigger必须是查询批次中的第一个语句 为什么我建立触发器提示错误为“create trigger必须是查询批次中的第一个语句”?触发器有个规定:create trigger语句必须是批处理中的第一个语句。将该批处理中随后的其他所有语句解释为create trigger语句定义的一部分。如果在create trigger语句前加入了其他的语句,就会出现上边的错误,比如在前边加上USE OpenLab_System来切换数据库,就出错。 9.4.2 返回错误信息的语句 如何返回错误信息?用Print定义的错误提示信息怎么看不到?用Print定义的错误提示信息只能在查询器中执行语句时,错误提示信息才会出现,而其他应用程序来操作数据时,包括SQL Server Management Studio管理器,都不会看到print语句定义的错误提示。想要看到提示的话,就
文档评论(0)