




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验六 存储过程和触发器142208100149 陈聪1、目的与要求(1)掌握存储过程的使用方法。(2)掌握触发器的使用方法。2、实验准备(1)了解存储过程的使用方法。(2)了解触发器的使用过程。(3)了解inserted逻辑表和deleted逻辑表的使用。(4)了解如何编写CRL存储过程与触发器。3、实验内容。(1)存储过程。创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。注:此段T-SQL命令,书上变量名书写错误,漏掉了下划线。(nu_MBER1和nu MBER1区别)执行该存储过程,并查看结果。创建存储过程,比较两个员工的实际收入,若前者比后者
2、高就输出0,否则输出1.执行该存储过程并查改结果。创建添加职员记录的存储过程EmployeeAdd。执行该存储过程。执行上面T-SQL命令,在结果栏中显示一行受影响,说明结果已经插入成功,在表Employees中也够看到结果已经存在。创建存储过程,使用游标确定一个员工的实际收入是否排在前3名。结果为1表示是,结果为0表示否。执行该存储过程,在结果栏中显示,命令已成功完成,并且在左侧对象资源管理器中进行刷新会显示刚刚创建的存储过程。执行该存储过程:上面T-SQL结果中输出“1”,代表着员工“108991”的实际收入排在前三名。【思考与练习】A、创建存储过程,要求当一个员工的工作年份大于6年时,将
3、其转到经理办公室工作。创建这个存储过程时候,在存储过程的条件判断中我添加了一项,判断工作年份在6年以上的员工是否在经理办公室,只有不在经理办公室的时候才进行调整,这样更符合实际问题些。然后执行上面的存储过程,并且查看结果:此时有可能会出现(我就出现了)这样的问题,在之前实验三中就出现了。解决方法同样是解除规则的绑定。查看表Employees中员工“000001”的DepartmentID已经修改为“3”(经理办公室)。B、创建存储过程,根据每个员工的学历将收入提高500.首先创建一个存储过程,利用什么学历增加收入,在这里,本科学历增加收入500.执行上面的存储过程,查看结果:由于在执行这个存储
4、过程之前,我先执行了一个查询语句,将增加收入之前的所有本科学历职工的收入输出,便于与执行操作之后的结果进行比较。(增加之前)(增加之后)C、创建存储过程,使用游标计算本科及以上学历的员工在总员工数中所占的比例。D、使用命令方式修改存储过程的定义。 在资源管理器中选择“可编程性”“存储过程”“系统存储过程”右击选择存储器,“修改”在“查询分析器”中修改T-SQL命令行。(2)触发器对于YGGL数据库,表Employees的DepartmentID列和表Departments的DepartmentID列满足参照完整性规则,即:向Employees表添加记录时,该记录的“DepartmentID”字
5、段值Departments表中应存在。修改Departments表的“DepartmentID”字段值时,该字段在Employees表中的对应值也应该修改。删除Departments表中记录时,该记录的“DepartmentID”字段值在Employees表中对应记录也应删除。对于上述参照完整性规则,在此听过触发器实现。在“查询分析器”窗口中输入各触发器的代码并执行。 向Employees表插入或修改一个记录时,通过触发器检查记录的DepartmentID值在Departments表中是否存在,若不存在,则取消插入或修改操作。向Employees表插入一行记录,查看效果。向表Employees
6、中插入一个DepartmentID为6的职员信息,但是DepartmentID=6并不在Departments表中,因此会出现下面的触发器的提示。 修改Departments表“DepartmentID”字段值时,该字段在Employees表中对应值也做相应修改。 删除Departments表中记录的同时修改记录DepartmentID字段值在Employees表中对应的记录。 创建INSTEAD OF触发器,当向Salary表中插入记录时,先检查EmployeeID列上的值在Employees中是否存在,如果存在则执行插入操作,如果不存在则提示“员工号不存在”。向Salary表中插入一行记录
7、查看效果。 在结果中显示触发器提示的信息: 创建DDL触发器,当删除YGGL数据库一个表时,提示“不能删除表”,并回滚删除操作。当利用资源管理器中窗口操作时,尝试着鼠标点击删除Salary表时,会出现如下结果:触发器阻止删除YGGL中表。【思考与练习】A、对于YGGL数据库,表Employees的EmployeeID列与表Salary的EmployeeID列应满足参照完整性规则,请用触发器实现两个表间的参照完整性规则。当删除员工号为“000001”的职工,那么就会在Employees表哥Salary表中删除该员工的所有信息。但是上面的触发器只设定了删除Salary中数据,并没有删除Employ
8、ees中数据。另外,如果直接删除Employees中数据:就会出现这样的报错: 由于此时的EmployeeID存在于Salary表中,有外键关联无法删除,但是如果将Salary表中的EmployeeID=010008的记录删除就能删除了。B、当修改表Employees时,若将Employees表中员工的工作时间增加一年,则将收入增加500,若增加2年则增加1000,依次增加。若工作时间减少则无变化。创建一个触发器updateInCome修改Employees表中职工号为000001的员工的工龄(修改为9),刷新Salary表显示工资增加500.C、创建UPDATE触发器,当Salary表中InCome值增加500时,OutCome增加50.将其中职工000001的InCome修改为2600.8(增加500时,OutCome增加50) 从上面的截图中可以显示,当InCome增加500时,相应的OutCome也增加50.D、创建INSTEAD OF触发器,实现向不可更新视图插入数据。首先创建一个视图a_view然后创建一个触发器最后实现向视图a_view中插入数据:E、创建DLL触发器 ,当删除数据库时,提示“不可删除”,并回滚删除操作。4、实验总结 通过本次实验大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业文化建设评估试卷及答案
- 2025年信息安全技术人才资格考试卷及答案
- 2025年护理管理师考试试题及答案
- 2025年统计学原理与应用考试试题及答案
- 知识产权侵权纠纷诉讼代理服务合同
- 体育赛事公平竞赛承诺书标准模板下载
- 婚姻忠诚协议中房产居住权专属保留范本
- 企业高级管理人员竞业限制及补偿协议
- 网络店铺债务处理与权益维护合同
- 娱乐业劳务派遣职业病防治及责任协议
- 医院食堂营养餐实施方案
- 2024中国房企数字化产品力白皮书
- 《地方文化资源在幼儿园中开发利用的比较研究》
- 水泥基材料改性研究-洞察分析
- 3-1-绝缘安全用具、验电器的使用方法
- 安规线路培训
- 2024劳动法律法规培训
- 幼升小公有住宅租赁合同(2篇)
- 实验室安全教育课件
- 无缝气瓶检验作业指导书2024
- 4.1基因指导蛋白质的合成(第1课时)高一下学期生物人教版必修2
评论
0/150
提交评论