实训5 触发器的设计与应用

实训5 触发器的设计与应用

ID:15261083

大小:67.00 KB

页数:4页

时间:2018-08-02

实训5 触发器的设计与应用_第1页
实训5 触发器的设计与应用_第2页
实训5 触发器的设计与应用_第3页
实训5 触发器的设计与应用_第4页
资源描述:

《实训5 触发器的设计与应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实训五触发器的设计与应用【实训目的】能使用触发器完成对已创建的studentScore数据库中数据表的约束、默认值和规则的复杂的完整性检查,进一步确保数据的完整性。当向表里插入记录(INSERT)、更新记录(UPDATE)或删除记录(DELETE)时,激活触发器工作,进行完整性验证。【实训任务】(1)在StudentScore数据库中创建一个插入触发器,实现当向bScore表中插入某门课程的成绩记录时,检查bCourse表中是否有该课程。如果没有,则不能向成绩表中插入该课程的成绩记录。(2)在StudentScore数据库中

2、创建一个触发器,实现当插入或修改bScore表中某个学生某门课程的考试成绩时,自动计算出该学生此门课程的学分(课时数/16)。(3)在StudentScore数据库中创建一个删除触发器,实现当删除bStudent表中的某个学生记录时同时删除bScore表中与之对应的成绩记录。【实训要求】完成时间:2课时上交形式:数据库文件(电子格式),报告内容(结果可打印张贴或书写)【实训步骤】Ø请恢复StudentScore数据库到初始的状态!5.1使用Transact-SQL语句创建触发器1、创建语法格式为:CREATETRIGGER<

3、触发器名>ON{<表名>∣<视图名>}[WITHEncryption]AFTER

4、INSTEADOF

5、FOR[DELETE][,][INSERT][,][UPDATE]AS     说明:(1)FOR

6、AFTER

7、INSTEADOF:指定触发器激活的时机,AFTER表示当前所有操作(包括约束)执行完成后再激发触发器。INSTEADOF指定由触发器代替执行触发SQL语句。在表或视图上,每个INSERT、UPDATE或DELETE语句最多可以定义一个INSTEADOF触发器。FOR是为了和早期的SQLServer版

8、本相兼容而设置的,功能与AFTER一样。(2)[DELETE][,][INSERT][,][UPDATE]:指定在表或视图上激活触发器的语句。至少指定一个选项,如果指定多个选项,则需要用逗号分隔。2、两个重要的临时的表:Inserted表和Deleted表。这两个表固定储存在与触发器一起的内存中而不是数据库中,主要用于保存用户操作可能更改的行的旧值和新值。þ可使用查询分析器创建触发器,也可以使用企业管理器创建触发器!使用企业管理器创建触发器的步骤如下:(1)在企业管理器中,展开相应的服务器和数据库,单击“表”节点,在右边的窗

9、口中列出了数据库中目前已经创建好的系统表和用户表,鼠标右击要创建触发器的表,从弹出的快捷菜单中选择【所有任务∣管理触发器】命令,打开如图5-1所示的“触发器属性”对话框。图5-1“触发器属性”对话框(2)在对话框的文本框中输入创建触发器的T-SQL语句。(3)单击“检查语法”按钮检查该触发器代码的语法是否正确。(4)单击“确定”按钮完成触发器的创建工作。(1)在StudentScore数据库中创建一个插入触发器,实现当向bScore表中插入某门课程的成绩记录时,检查bCourse表中是否有该课程。如果没有,则不能向成绩表中插

10、入该课程的成绩记录。USEStudentScoreGOCREATETRIGGERScore_InsertONdbo.bScoreAFTERINSERTASIF(SELECTCount(*)FROMbCourse,InsertedWHEREbCourse.Course_Id=Inserted.Course_Id)=0BEGINRAISERROR('没有此课程!',16,1)ROLLBACKTRANSACTIONENDRETURN(2)在StudentScore数据库中创建一个触发器,实现当插入或修改bScore表中某个学生某门

11、课程的考试成绩时,自动计算出该学生此门课程的学分(课时数/16)。(提示:学分计算方法为:如果学生的考试成绩或补考成绩超过60分,则该学生此门课程的学分=此门课程的课时数/16;如果学生的考试成绩或补考成绩不及格,则该学生此门课程的学分为0。)USEStudentScoreGOCREATETRIGGERScore_CreditONdbo.bScoreAFTERINSERT,UPDATEASIF(SELECTScoreFROMInserted)>=60OR(SELECTMakeupFROMInserted)>=60UPDATE

12、bScoreSETCredit=(SELECTHoursFROMbCourseWHEREbCourse.Course_Id=bScore.Course_Id)/16WHEREStud_Id=(SELECTStud_IdFROMInserted)ANDCourse_Id=(SELECTCou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。