实验七
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南工业大学实验报告
课程数据库技术基础实验名称实验7
院系中英国际学院专业班级软件1602
姓名姜棚学号201630910220
指导老师:程凤娟日期2017-11-21
1、目的与要求
(1)掌握存储过程的使用方法;
(2)掌握触发器的使用方法;
2、实验准备
(1)了解存储过程的使用方法;
(2)了解触发器的使用方法
(3)了解inserted逻辑表和deleted逻辑表的使用;
(4)了解如何编写CRL存储过程与触发器。
3、实验内容
1)存储过程
(1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。
执行该存储过程,并查看结果;
(2)创建存储过程,比较两个员工的实际收入,若前者比后者高就输出0,否则输出1。
执行该存储过程,并查看结果:
(3)创建添加职员记录的存储过程EmployeeAdd。
执行该存储过程:
(4)创建一个带有OUTPUT游标参数的存储过程,在Employees表中声明并打开一个游标。
声明一个局部游标变量,执行上述存储过程,并将游标赋值给局部游标变量,然后通过该游标变量读取记录:
(5)创建存储过程,使用游标确定一个员工的实际收入是否排在前三名。
结果为1表示是,结果为0表示否。
执行该存储过程,并查看结果:
思考与练习:
●创建存储过程,要求当一个员工的工作年份大于6年时将其转到经理办公室
工作。
●创建存储过程,根据每个员工的学历将收入提高500元。
●创建存储过程,使用游标计算本科及以上学历的员工在总员工人数所占的比
例。
●使用命令方式修改存储过程的定义。
2)触发器
对于YGGL数据库,表Employees的DepartmentID列与表Departments的DepartmentID列应满足参照完整性规则,即:
●向Employees表添加记录时,该记录的“DepartmentID”字段值在
Departments表中应存在。
●修改Departments表的DepartmentID字段值时,该字段在Employees表中
的对应值也应修改。
删除Departments表中的记录时,该记录的DepartmentID字段值在Employees表中对应的记录也删除。
对于上述参照完整性规则,在此通过触发器实现。
在“查询分析器”中输入各触发器的代码并执行。
(1)向Employees表插入或修改一个记录时,通过触发器检查记录的DepartmentID值在Departments表中是否存在,如不存在,则取消插入或修改操作。
(2)修改Departments表“DepartmentID”字段值时,该字段在Employees 表中的对应值也做相应修改。
(3)删除Departments表中记录的同时删除该记录“DepartmentID”字段值在Employees表中对应的记录。
(4)创建INSTEAD OF触发器,当向Salary表中插入记录时,先检查EmployeeID 列上的值在Employees是否存在,如果存在则执行插入操作,如果不存在则提示“员工号不存在”。
(5)创建DDL触发器,当删除YGGL数据库的一个表时,提示“不能删除表”,并回滚删除表的操作。
思考与练习
●对与YGGL数据库,表Employees的Employees的EmployeeID列与表
Salary的EmployeeID列应满足参照完整性规则,请用触发器实现两个表间的参照完整性。
●当修改表Employees时,若将Employee表中员工的工作时间增加一
年,则将收入增加500,若增加2年则增加1000,依次增加。若工作时间减少则无变化。
创建UPDATE触发器,当Salary表中Income值增加500时,OutCome 值则增加50。
●创建INSTEAD OF 触发器,实现向不可更新视图插入数据。
●创建DDL触发器,当删除数据库时,提示“无法删除”并回滚删除操
作。