资源描述:
《SQL Server2008触发器练习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、触发器练习题1、创建触发器在学生信息管理系统中,学生信息表包含列“学号”、“姓名”、“性别”、“出生年月”、“班级号”;班级信息表中包含列“班级号”、“班级名称”、“人数”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。(用附录中的脚本创建)--1)在student上创建INSERT触发器stu_insert,要求在student表中插入记录时(要求每次只能插入一条记录),这个触发器都将更新class表中的class_nun列。并测试触
2、发器stu_insert。createtriggerstu_insertonstudentforinsertasif@@rowcount>1beginRAISERROR('Youcannotinsertmorethanonestudentatatime.',16,1)ROLLBACKTRANreturn--注意此处的return语句不能省略,因为在触发器脚本中的ROLLBACKTRAN语句之后还存在语句,那么将会执行这些语句,而为了其后的语句不执行,必须加入return语句endupdateclasssetclass_num
3、=class_num+1whereclass_id=(selectclass_idfrominserted)print'class表中数据更新成功'go--测试1insertintostudentselect'0601012','丽','女','1986-07-11','0601'unionallselect'0601013','梅','女','1988-02-07','0601'--测试2insertintostudentvalues('0602011','文','女','1986-09-21','0602')--2)修改
4、题1中创建的INSERT触发器stu_insert,要求在student表中插入记录时(允许插入多条记录),这个触发器都将更新class表中的class_nun列。并测试触发器stu_insert。altertriggerstu_insertonstudentforinsertasupdateclasssetclass_num=class_num+(selectcount(class_id)frominsertedwhereclass.class_id=inserted.class_id)print'class表中数据更新成
5、功'go--测试1insertintostudentselect'0601012','丽','女','1986-07-11','0601'unionallselect'0601013','梅','女','1988-02-07','0601'--测试2insertintostudentvalues('0602011','文','女','1986-09-21','0602')--3)在student上创建DELETE触发器stu_delete,要求在student表中删除记录时,这个触发器都将更新class表中的class_nu
6、n列。并测试触发器stu_delete。createtriggerstu_deleteonstudentfordeleteasupdateclasssetclass_num=class_num-(selectcount(class_id)fromdeletedwhereclass.class_id=deleted.class_id)go--测试1deletefromstudentwherestu_id='0601001'--测试2deletefromstudent--4)为防止其他人修改成绩,在score上创建UPDATE触
7、发器sc_update,要求不能更新score表中的score列。测试触发器sc_update。createtriggersc_updateonscoreforupdateasifupdate(score)beginprint'不允许修改score列'rollbacktranendgo--尝试修改score列updatescoresetscore=992、查看触发器相关信息:使用系统存储过程sp_help,sp_helptext,sp_helptrigger查看触发器相关信息。execsp_helpexecsp_helpsc
8、_updateexecsp_helptextsc_updateexecsp_helptriggerstudentexecsp_helptriggerstudent,'insert'--附录:--创建数据库,准备数据createdatabasestudent_scoreGO--在数据库中创建