存储过程和触发器.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

10.4.2触发器的功能SQLServer2005提供了两种方法来保证数据的有效性和完整性:约束和触发器。触发器的常用功能如下。(1)完成更复杂的数据约束:触发器可以实现比约束更为复杂的数据约束。(2)检查SQL所做的操作是否允许:触发器可以检查SQL所做的操作是否被允许。第29页,共69页,星期日,2025年,2月5日(3)修改其他数据表里的数据:当一个SQL语句对数据表进行操作的时候,触发器可以根据SQL语句的操作情况来对另一个数据表进行操作。(4)调用更多的存储过程:约束是不能调用存储过程的,但触发器本身就是一种存储过程,而存储过程是可以嵌套调用的,所以触发器也可能调用一个或多个存储过程。(5)返回自定义的错误信息:约束只能通过标准的系统错误信息来传递错误信息,如果应用程序要求使用自定义信息和较为复杂的错误处理,则必须使用触发器。(6)更改原本要操作的SQL语句:触发器可以修改原本要操作的SQL语句。(7)防止数据表结构更改或数据表被删除:为了保护已经建立好的数据表,触发器可以在接收到以DROP或ALTER开头的语句后,不对数据表的结构做任何操作。第30页,共69页,星期日,2025年,2月5日10.4.3触发器的类型1.DML触发器DML触发器是当数据库服务器中发生数据操纵语言DML事件时执行的特殊存储过程,如INSERT、UPDATE等。2.DDL触发器DDL触发器是当数据库服务器中发生数据定义语言DDL事件时执行的特殊存储过程,如CREATE、ALTER等。第31页,共69页,星期日,2025年,2月5日10.5创建和应用DML触发器10.5.1DML触发器的类型1.AFTER触发器这类触发器是在记录已经改变之后,才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用ROLLBACKTRANSACTION语句来回滚本次的操作。2.INSTEADOF触发器这类触发器一般是用来取代原本要进行的操作,在记录变更之前发生的,它并不去执行原来的SQL语句里的操作,而是去执行触发器本身所定义的操作。第32页,共69页,星期日,2025年,2月5日10.5.2DML触发器的工作原理在SQLServer2005中,为每个DML触发器定义了两个特殊的表,一个是Inserted表,一个是Deleted表。修改操作inserted表deleted表增加(INSERT)记录存放新增的记录------删除(DELETE)记录-----存放被删除的记录修改(UPDATE)记录存放更新后的记录存放更新前的记录第33页,共69页,星期日,2025年,2月5日Inserted表里存放的是更新前的记录:对于插入记录操作来说,Inserted表里存储的是要插入的数据;对于更新记录的操作来说,Inserted表里存放的是要更新的记录。Deleted表里存放的是更新后的记录:对于更新记录操作来说,Deleted表里存放的是更新前的记录;对于删除记录操作来说,Deleted表里存储的是被删除的旧记录。第34页,共69页,星期日,2025年,2月5日10.5.3创建DML触发器的注意事项(1)CREATETRIGGER语句必须是批处理中的第一个语句,该语句后面的所有语句都被解释为CREATETRIGGER语句定义的一部分。(2)创建DML触发器的权限默认分配给表的所有者,且不能将该权限转授给其他用户。(3)DML可以引用当前数据库以外的对象,但只能在当前数据库中创建DML触发器。(4)不能对系统表或临时表创建DML触发器(5)对于含有DELETE或UPDATE操作定义的外键表,不能定义INSTEADOF触发器。第35页,共69页,星期日,2025年,2月5日10.5.3创建触发器CREATETRIGGER触发器名ON{表|视图}[WITHENCRYPTION]{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE][,][DELETE]}[NOTFORREPLICATION]AS[{IFUPDATE(列名)[{AND|OR}UPDATE(列名)][…n]}]SQL语句第36页,共69页,星期日,2025年,2月5日(1)WITHENCRYPTION。加密CREATETRIGGER语句文本的条目。(2)FOR|AF

文档评论(0)

xiaoyao2022 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档