第5章SQLServer关系数据库应用要点.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文档。上传文档
查看更多
5.3.2 触发器 【例5-3-7】对st_course库中student表的DELETE操作定义触发器(显示删除信息)。 USE st_course GO IF EXISTS( SELECT name FROM sysobjects WHERE name=st_d AND type=TR) DROP TRIGGER st_d GO CREATE TRIGGER st_d ON student FOR DELETE AS PRINT 数据被删除! GO 5.3.2 触发器 3.触发器的类型 SQL Server 2000提供了两种触发器:INSTEAD OF和AFTER触发器。这两种触发器的差别在于他们被激活的时机不同。 INSTEAD OF触发器用于替代引起触发器执行的T-SQL语句。NSTEAD OF触发器可以用于表、视图。 AFTER触发器在一个INSERT、UPDATE或DELETE语句之后执行,进行约束检查等动作都将在AFTER触发器被激活之前发生。AFTER触发器只能用于表。 一个表或视图的每个修改动作(INSERT、UPDATE和DELETE)都可以有一个INSTEAD OF触发器,一个表的每个修改动作都可以有多个AFTER触发器。这里只介绍AFTER触发器。 当使用触发器时,有时需要知道一个列在触发器执行后的值,SQL Server用两个特殊名称的虚表DELETED和INSERTED来测试结果。这两个表的结构与触发器表相同。 5.3.2 触发器 INSERT与UPDATE触发器 当向表中插入数据时,所有数据约束都通过之后,INSERT触发器就会执行。新的记录不但加到触发器表中,而且还会有副本加入INSERTED表中。INSERTED表与DELETED表一样,它们的记录是可读的,可以进行比较,以便确认这些数据是否正确。 利用UPDATE修改一条记录时,相当于删除一条记录然后再增加一条新记录。所以UPDATE操作使用DELETED和INSERTED两个表。当使用UPDATE操作时,触发器表中原来的记录被移到DELETED表中,修改过的记录插入到INSERTED表中,触发器可以检查这两个表,以便确定应执行什么样的操作。 5.3.2 触发器 【例5-3-8】在数据库st_course中,当向表sc中添加记录时,自动添加选课日期。 CREATE TRIGGER T_sc_adddate ON sc After INSERT AS update sc set xkrq=getdate() where cno=(select cno from INSERTED ) and sno=(select sno from INSERTED ) 触发器创建之后,用户执行下面一条命令验证: insert into sc(sno,cno) values(‘GM102,‘05) 5.3.2 触发器 【例5-3-9】对sc表建立insert和update触发器,检查数据一致性。 create trigger sc_t on sc for insert,update as if exists(select * from student where sno=(select sno from inserted)) and exists(select * from course where cno=(select cno from inserted)) print inserted,ok! --插入成功 else begin print error! rollback --插入失败,事物回滚 end 5.3.2 触发器 DELETE触发器 对表进行删除时,如果此表有DELETE型的触发器,则触发器被触发执行。被删除的记录存在DELETED表中。当执行DELETE操作时,应注意以下几点: 1)被放到DELETED表中的记录,不再存于触发器表中,因此触发器表与DElETED表没有共同的记录。 2)DELETED表放在内存中,执行效率很高。 5.3.2 触发器 【例5-3-10】对student表建立delete触发器(student_t),对sc表进行级联删除。 create trigger student_t on student for delete as if exists(select * from sc where sno=(select sno from delet

文档评论(0)

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

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

1亿VIP精品文档

相关文档