数据库系统概论实验报告五.doc

数据库系统概论实验报告五.doc

ID:56922099

大小:438.50 KB

页数:7页

时间:2020-07-24

数据库系统概论实验报告五.doc_第1页
数据库系统概论实验报告五.doc_第2页
数据库系统概论实验报告五.doc_第3页
数据库系统概论实验报告五.doc_第4页
数据库系统概论实验报告五.doc_第5页
资源描述:

《数据库系统概论实验报告五.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、山西大学计算机与信息技术学院实验报告姓名张浩田学号专业班级2014级计科三班课程名称数据库实验实验日期2016/12/19指导教师王俊红成绩实验名称实验五创建和使用触发器一、实验目的:理解触发器的触发过程和类型,掌握创建触发器的方法。二、实验内容及原理:触发器实际上就是一种特殊类型的存储过程,它是在执行某些特定的T-SQL语句时自动执行的一种存储过程。在SQLServer2005中,根据SQL语句的不同,把触发器分为两类:一类是DML触发器,一类是DDL触发器。在SQLServer2005中,触发器可以分为两大类:DML触发器和DDL触发器。DML触发器是当数据库服务器中发生数据操作语言(D

2、ataManipulationLanguage)事件时执行的存储过程。DML触发器又分为两类:After触发器和InsteadOf触发器。DDL触发器是在响应数据定义语言(DataDefinitionLanguage)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。三、实验步骤:掌握使用对象资源管理器和Transact-SQL语句两种方法创建触发器。方法:启动SSMS,链接到数据库实例,在“对象资源管理器”窗口里,选择“数据库实例”,→“数据库”→“学生管理系统”→“表”→“Student”→“触发器”右键快捷菜单的“新建触发

3、器”,打开“创建触发器”模板,如图5-1所示。在“创建触发器”模板中,修改代码,或者选择“查询”→“指定参数模板”选项,打开“指定模板参数的值”,指定模板参数后,在模板里修改其他代码,如图5-2。然后单击“运行”按钮,完成触发器的创建。图5-1图5-2例1:当输入InsertintoStudent1values(,’王阳’,‘男’,36,‘计算机’);建立的触发器执行了其功能,执行结果为例2:createtriggerssonstudentforinsertasbegindeclare@xhsmallint;select@xh=inserted.Sagefrominserted;ifexis

4、ts(selectSnofromstudentwhereSage=@xh)updatestudentsetsage=@xh+1whereSage=@xh;end;当执行以下语句时useTestDBinsertintostudentvalues('','zp','男',20,'ma');结果中Sage为20的元组都加上了1。例3:创建触发器如下:触发器所产生的效果:例4:创建触发器:执行SQL语句:结果使student表中的所有元组的sage均变为20:思考题在数据库Company_Data的表"项目数据表"和"员工数据表"中分别创建触发器。(1)打开查询编辑器。(2)在查询窗口书写CREAT

5、ETRIGGER语句,基于表"员工数据表"创建AFTERINSERT触发器Tigger_NewEmployeeSalary,将插入员工的工资额限制在5000以内。useTestDBGOCREATETRIGGERTrigger_NewEmployeeSalaryON员工数据表AFTERINSERTASIF(SELECT工资FROMinserted)>5000BEGINPRINT'新员工工资不能超过'ROLLBACKENDGO点执行后触发器创建成功。在查询编辑器中写如下语句,用于测试上述触发器是否起作用:insertintoEmployee(编号,工资)values(10,6000);点击执行后

6、会提示以下信息(说明触发器已起到作用)(3)在查询窗口书写CREATETRIGGER语句,基于表"员工数据表"创建AFTERUPDATE触发器Trigger_SalaryChange,将员工工资变动额限制在2000以内。CREATETRIGGERTrigger_SalaryChangeON员工数据表AFTERUPDATEASIFUPDATE(工资)BEGINIF(SELECTMAX(ABS(inserted.工资-deleted.工资))FROMinsertedJOINdeletedONinserted.编号=deleted.编号)>2000BEGINPRINT'工资变动不能超过'ROLLB

7、ACKTRANSACTIONENDEND点击执行后触发器就创建成功了。在查询编辑器中写如下语句,用于测试上述触发器是否起作用:Update员工数据表set工资=10000where姓名='李四';四、实验结果及分析:1、通过实验了解了触发器的触发过程和类型,掌握创建触发器的方法,能够根据题目要求设计出触发器。2、在创建触发器中,系统会临时生成一个inserted或deleted表,对触发器的一些操作都用到这些

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

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

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