实训十ku触发的创建和使用.docVIP

  • 2
  • 0
  • 约7.37千字
  • 约 5页
  • 2016-10-17 发布于贵州
  • 举报
实训十ku触发的创建和使用

实训十 触发器的创建和使用 一、实训目的 理解触发器的作用; 了解触发器和一般存储过程的区别; 掌握创建、修改及删除触发器的方法; 理解触发器执行的过程。 二、实训步骤 (一) 简单触发器的创建和使用 在student数据库中t_course表创建一名为myt1的AFTER触发器,要求实现以下功能:当插入一条记录后提示“已插入一条新记录”,并验证此触发器。 create trigger myt1 on t_course for insert as print 已插入一条新记录--验证insert into t_course values (123,aaa,72,5) 已插入一条新记录 (1 行受影响)create trigger myt2 on t_course for delete as print 已删除一条记录--验证delete from t_course where c_number=123 已删除一条记录 (1 行受影响) create trigger myt3 on t_course for update as print 已修改一条记录--验证 update t_course set credit=11 where c_number=123 (1 行受影响)create trigger myt4 on t_course instead of delete as print 不能删除此表的记录!--验证 delete from t_course where c_number=123 (1 行受影响)drop trigger myt1,myt2,myt3,myt4 命令已成功完成。 (二) 较复杂的触发器的创建和使用 创建一个AFTER触发器,要求实现以下功能:在t_score表上创建一个插入更新类型的触发器scoreCheck,当在score字段中插入或修改考试分数后,触发该触发器,检查分数是否在0至100分之间。(参考教材P186的例10-3,运行后发现尽管分数不在0至100分之间,但还是能够插入和修改) CREATE TRIGGER TR_ScoreCheck ON T_SCORE FOR INSERT, UPDATE AS IF UPDATE(SCORE) PRINT AFTER触发器开始执行…… BEGIN DECLARE @ScoreValue real SELECT @ScoreValue=(SELECT SCORE FROM inserted) IF @ScoreValue100 OR @ScoreValue0 PRINT 输入的分数有误,请确认输入的考试分数! END 命令已成功完成。 --验证TR_ScoreCheck触发器的功能PRINT 在t_score中插入记录时触发器执行结果: PRINT INSERT INTO t_score VALUES(0554112,-35)UPDATE t_score SET score=-35 WHERE s_number=0554112 在t_score中修改记录时触发器执行结果: AFTER触发器开始执行…… 输入的分数有误,请确认输入的考试分数!AFTER触发器开始执行…… 输入的分数有误,请确认输入的考试分数! (1 行受影响)CREATE TRIGGER scoreCheck2 ON t_score FOR insert, update AS declare @ScoreValue as int select @ScoreValue =(select score from inserted) if @ScoreValue 0 or @ScoreValue 100 begin rollback transaction print 数据不正确不能插入或修改 end 验证上面创建的触发器,检查当输入的分数不在0到100之间,能否保存分数。此功能的实现是依赖代码段的黑体字标识的语句rollback transaction来实现的,其作用是回滚变动的数据。教材没有此语句。 根据教材第4章P68创建一个检查约束,实现上述2的功能。体会触发器与检查约束功能上的相似之处。 在student数据库中t_course表创建一名为twofield的AFTER触发器,要求实现以下功能:当在hours(学时)和credit(学分)字段插入或修改学时或学分后,触发该触发器,检查学时是否是大于0小于200的整数,并且学分是否是大于0小于10的实数,若不满足这两个条件,则不允

文档评论(0)

1亿VIP精品文档

相关文档