第十章存储过程和触发器58.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.18】建立一个触发器,当向成绩表中插入一条记录时,检查被插入的成绩是否大于等于0和小于等于100。若不满足该条件,不允许插入记录。 CREATE TRIGGER check_insert ON score AFTER insert AS DECLARE @成绩 int SELECT @成绩=grade FROM inserted IF @成绩=0 AND @成绩=100 PRINT 插入成功 ELSE BEGIN PRINT 成绩值超出范围,不允许插入 ROLLBACK TRANSACTION END --插入记录,检验insert触发器的作用 INSERT grade(student_id,course_id,grade) VALUES(0801107,1001,-10) (3)UPDATE触发器 修改触发器和插入触发器的工作过程基本上一致,修改一条记录等于插入了一条新的记录并且删除一条旧的记录。 【例题10.19】假设成绩信息被成功录入到表中以后将允许修改,建立一个触发器,禁止其修改成绩。 CREATE TRIGGER check_update ON score AFTER update AS IF update(grade) BEGIN PRINT 修改无效,成绩被录入后,不允许修改 ROLLBACK TRANSACTION END --修改成绩值,检查?update触发器的作用 UPDATE score set grade=80 WHERE student_id=0801101 AND course_id=1001 (4)DELETE触发器 DELETE触发器通常用于两种情况,第一种情况是为了防止那些确实需要删除但会引起数据一致性问题的记录的删除。 第二种情况是执行可删除主记录的子记录的级联删除操作。可以使用这样的触发器从主销售记录中删除所有的定单项。 【例题10.20】在学生表中建立一个触发器,若删除学生记录,则把该学生在成绩表中的成绩记录一并删除。 CREATE TRIGGER check_delete ON student AFTER delete AS DELETE score WHERE student_id in (SELECT student_id FROM deleted) --删除学生记录,检查?delete触发器的作用 DELETE student WHERE student_id=0801103 --查看成绩表?grade中‘0801103’号学生的成绩是否被删除 SELECT * FROM grade 10.2.4 DDL触发器 1、建立DDL触发器 CREATE TRIGGER trigger_name ON {ALL SERVER|DATABASE} [WITH ENCRYPTION] {FOR | AFTER} {event_type|event_group}[,…n] AS ? {sql_statement[...n] } 参数说明: ②ALL SERVER 指明触发器的作用域为当前服务器。如果指定了此参数,则只要当前服务器中的任何位置出现event_type或event_group,就会激活触发器。 ③DATABASE 指明触发器的作用域为当前数据库。如果指定了此参数,则只要当前数据库中的任何位置出现event_type或event_group,就会激活触发器。 ⑤event_type 将导致激活DDL触发器的T-SQL语言的名称。event_type选项有:CREATE_TABLE、CREATE_ DATABASE 、ALTER_TABLE等等。 ⑥event_group 预定义的T-SQL语言事件分组的名称。执行任何属于event_group的T-SQL语言事件,都将激活DDL触发器。 event_group有:DDL_SERVER_SECURITY_EVENTS代表所有以服务器为目标的各类DDL语法语法事件,而 DDL_TABLE_VIEW_EVENTS代表了针对数据表、视图表、索引与统计的DDL事件。 【例题10.21】使用 DDL 触发器来防止数据库score中的表被任意修改或删除。 USE score GO CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS BEGIN PRINT 禁止修改或删除表 ROLLBACK END --修改表,检验safety触发器

文档评论(0)

178****9325 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档