SQLServer触发器应用探析

SQLServer触发器应用探析李虎军摘要:该文介绍了触发器类型、特点以及触发器产生的两个临时表,并着重对触发器提高数据完整性的应用及其注意事项进行了阐述,以期对数据库设计者在设计数据库系统时提高数据完整性控制提供有益帮助。关键词:完整性;触发器;CHECK约束:TP311文献标识码:A:1009-3044(2016)16-0013-02信息系统开发与运行离不开数据库系统的支持,而对于数据库而言,其存储的数据的正确性至关重要。为确保数据的正确性,各种DBMS都提供了各种方法或机制进行检测、检查。灵活、合理地应用触发器对提高信息系统的数据正确性有很好的帮助。1SQLServer触发器SQLServer触发器是一类特殊存储过程,其由用户定义在数据表上并被事件驱动的由DBMS调用执行的。触发器不能被用户直接调用执行,也不能接收参数。在数据表上或在数据库对象上定义了相应的触发器后,当在数据表中DELETE、INSERT、UPDATE操作或在CREATE、DROP、ALTER数据库对象时将激发并自动执行相应的触发器,使得相应的操作必须满足由触发器所定义的约束规则才能得到成功执行。引起触发器被执行的相应操作和触发器被统一当作一次事务处理。当事务未能整体成功执行,则DBMS会自动回到该事务执行前的状态。触发器可用于各种数据规则、约束和默认值的完整性检查,也可完成更复杂的数据检测和业务逻辑规则。1.1触发器分类按照触发事件的不同,SQLServer触发器可以分为DDL(DataDefinitionLanguage)触发器和DML(DataManipulationLanguage)触发器两种。1)DDL触发器用于处理相应的DDL事件。DDL事件有数据库系统用户登录与退出和CREATE、DROP、ALTER语句等操作。DDL触发器可用于审核与规范数据库中对表结构、视图结构上的操作,还可被用于应用系统管理任务。当数据库结构或表结构发生变化时激发触发器,触发器能记录相应的修改过程,并能禁止用户删除指定表、限制用户对数据库修改等操作。2)DML触发器用于响应用户DML操作事件。DML操作事件是指针对表或视图的INSERT、DELETE和UPDATE操作语句。该类触发器在DML编辑数据时触发执行,在处理表或视图中数据时DML触发器检查操作是否满足相应业务规则,使得数据完整性进一步扩展。根据触发器是在触发操作语句前还是后执行的不同,触发器又分为INSTEADOF触发器和AFTER(FOR)触发器两种。1)INSTEADOF触发器。顾名思义,该种触发器在数据操作之前执行,代替操作数据的相关语句,实际上是执行触发器中的代码。该类触发器定义在视图或表上。在视图或表上,每个DELETE、UPDATE和INSERT语句只可定义一个INSTEADOF触发器。2)AFTER(FOR)触发器。在DML语句操作数据完成以后被触发执行。此种触发器可对被操作的数据进行业务规则检查,如果违反相应的业务规则,则返回该数据操作前的状态。只能在表上而不能在视图上定义AFTER(FOR)触发器,在同一张数据表上可定义多个AFTER(FOR)触发器。1.2DBMS生成的两个临时表在执行DML触发器时,SQLSERVER生成两个只读型临时表:deleted表和inserted表。在触发器执行时这两个表才存在于内存,其表结构与激发DML触发器的视图或基表类似。1)deleted表deleted表仅存放进行本次UPDATE和DELETE语句操作的基表的旧数据行。执行UPDATE或DELETE语句时,该数据行从基表中移动到deleted表并从基表中删除。2)inserted表inserted表仅存放进行本次UPDATE和INSERT语句操作的新数据行。执行UPDATE语句或INSERT语句时,新数据行被插入基表的同时也被复制到inserted表中。实际上,UPDATE操作可看做由DELETE操作和INSERT操作组合而成的。UPDATE操作时,DBMS将要修改的数据行从基表中删除并移到deleted表中,然后将修改后的新数据行同时插入到inserted表和基表中。2SQLServer触发器应用触发器机制类似Windows系统的消息响应机制,我们可以灵活利用这一点,不仅可以在数据表上实施比CHECK约束、外键约束等更为复杂的检查和操作,可以引用数据库中其他表中的字段,具有更精细和更强大的数据控制能力,还可以利用DDL触发器对数据库应用系统实施各种应用控制,提高数据库应用系统的安全性。2.1实现CHECK约束检查功能在DML触发器中可以灵活、编写代码处理相应的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?