网站大量收购闲置独家精品文档,联系QQ:2885784924

《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第9章.ppt

《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第9章.ppt

  1. 1、本文档共117页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据库原理及应用-(SQLServer2008版)》唐国良蔡中民-第9章课案

1、DML触发器分类 SQL Server 2008的DML触发器分为两类:After触发器和Instead Of触发器。Aftre触发器是在记录已经改变完成之后,才会被激活执行,它主要用于记录变更后的处理或检查,一旦发现错误,也可以用Rollback Transaction语句来回滚本次操作。Instead Of触发器一般用于取代原本的操作,在记录变更之前发生,它并不去执行原来的SQL语句里的操作,而去执行触发器本身所定义的操作。 2、DML触发器工作原理 在SQL Server 2008里,为每个DML触发器都定义了两个特殊的表,一个是插入表,一个是删除表。这两个表是建在数据库服务器的内存中的,是由系统管理的逻辑表,而不是真正存储在数据库中的物理表。对于这两个表,用户只有读取的权限,没有修改的权限。 这两个表的结构与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。 插入表里存放的是更新前的记录:对于插入记录操作来说,插入表里存放的是要插入的数据;对于更新记录操作来说,插入表里存放的是要更新的记录。 删除表里存放的是更新后的记录:对于更新记录操作来说,删除表里存放的是更新前的记录(更新完后即被删除);对于删除记录操作来说,删除表里存入的是被删除的旧记录。 After触发器是在记录更变完之后才被激活执行的。以删除记录为例:当SQL Server接收到一个要执行删除操作的SQL语句时,SQL Server先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。执行完毕之后,删除内存中的删除表,退出整个操作。 例如,在产品库存表里,如果要删除一条产品记录,在删除记录时,触发器可以检查该产品库存数量是否为零,如果不为零则取消删除操作。看一下数据库是怎么操作的: (1)接收SQL语句,将要从产品库存表里删除的产品记录取出来,放在删除表里。 (2)从产品库存表里删除该产品记录。 (3)从删除表里读出该产品的库存数量字段,判断是不是为零,如果为零的话,完成操作,从内存里清除删除表;如果不为零的话,用Rollback Transaction语句来回滚操作。 Instead Of触发器与After触发器不同。After触发器是在Insert、Update和Delete操作完成后才激活的,而Instead Of触发器,是在这些操作进行之前就激活了,并且不再去执行原来的SQL操作,而去运行触发器本身的SQL语句。 使用DML触发器的注意事项: After触发器只能用于数据表中,Instead Of触发器可以用于数据表和视图上,但两种触发器都不可以建立在临时表上。 一个数据表可以有多个触发器,但是一个触发器只能对应一个表。 在同一个数据表中,对每个操作(如Insert、Update、Delete)而言可以建立许多个After触发器,但Instead Of触发器针对每个操作只有建立一个。 如果针对某个操作即设置了After触发器又设置了Instead Of触发器,那么Instead of触发器一定会激活,而After触发器就不一定会激活了。 Truncate Table语句虽然类似于Delete语句可以删除记录,但是它不能激活Delete类型的触发器。因为Truncate Table语句是不记入日志的。 WRITETEXT语句不能触发Insert和Update型的触发器。 不同的SQL语句,可以触发同一个触发器,如Insert和Update语句都可以激活同一个触发器。 3、设计DML触发器 (1)设计After触发器 先使用图形用户界面SQL Server Management Studio设计一个After触发器,这个触发器的作用是:在更新一条记录的时候,发出“学生信息已经更新”的友好提示。步骤如下: 第一步:启动到SQL Server Management Studio,并登录到指定的服务器上。在“对象资源管理器”窗格中选择“数据库”选项,定位到“stu_info”?“表”?“dbo.student”选项,展开加号,找到“触发器选项”。 第二步:右击“触发器”选项,在弹出的快捷菜单中选择“新建触发器”选项,此时会自动弹出查询编辑器窗格。在查询编辑器窗格的编辑区里,SQL Server已经自动写入了一些简历触发器相关的SQL语句,如图9-7所示 图9-7 SQL Server 2008预写的触发器代码 第三步:修改查询编辑器窗格里的代码,将从“CREATE”开始到“GO”结束的代码改为以下内容。 CREATE TRIGGER student_update ON stu_info.dbo.student AFTER UPDATE A

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档