资源描述:
《存储过程与触发器.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验七项目名称:存储过程与触发器1、实验目的与要求:(1)掌握存储过程的使用方法。(2)掌握触发器的使用方法。2、实验准备:(1)了解存储过程的使用方法。(2)了解触发器的使用方法。(3)了解inserted逻辑表和deleted逻辑表的使用。3、实验内容:1、创建存储过程(1)添加员工记录的存储过程EmployeeAdd.在新建查询窗口输入如下程序,并执行USEYGGL1GOCREATEPROCEDUREEmployeeAdd(@employeeidchar(6),@namechar(10),@sexbit,@phonen
2、umberchar(12),@emailaddresschar(20),@departmentidchar(3))ASBEGININSERTINTOEmployeesVALUES(@employeeid,@name,@sex,@phonenumber,@emailaddress,@departmentID)ENDRETURNGO(2)修改员工记录的存储过程EmployeeUpdate.USEYGGL1GOCREATEPROCEDUREEmployeeUpdate(@empidchar(6),@employeeidchar(6
3、),@namechar(10),@sexbit,@phonenumberchar(12),@emailaddresschar(20),@departmentidchar(3))ASBEGINUpdateEmployeesSETEmployeeID=@employeeid,Name=@name,Sex=@sex,PhoneNumber=@phonenumber,EmailAddress=@emailaddress,DepartmentID=@departmentIDWHEREEmployeeID=@empidENDRETURN
4、GO没改之前的表:修改之后:(3)删除员工的存储记录过程EmployeeDelete。USEYGGL1GOCREATEPROCEDUREEmployeeDelete(@employeeidchar(6))ASBEGINDELETEFROMEmployeesWHEREEmployeeID=@employeeidENDRETURNGO没改之前的表:修改之后:2调用存储过程USEYGGL1EXECEmployeeAdd'','刘盟',True,'','','4'GOUSEYGGL1EXECEmployeeUpdate'','','
5、刘盟',True,'','','2'GOUSEYGGL1EXECEmployeeDelete''GO最终表数据没有变:分析一下此程序执行时可能出现哪几种情况。答:可能出现三种情况:(1)添加一行数据,值为:'','刘盟',True,'','','4';(2)修改“刘盟”行中数据,将EmployeeID值改为’’,DepartmentID值改为’2’;(3)删除EmployeeID值为’’的这行数据。3.创建触发器对于YGGL数据库,表Employees的DepartmentID列与表Departments的Departmen
6、tID列应满足参照完整性规则,具体说明如下。(1)向Employees表添加1条记录时,该记录的DepartmentID值在Departments表中应存在。(2)修改Departments表DepartmentID字段值时,该值在Employees表中的对应值也应修改。(3)删除Departments表中1条记录时,该记录的DepartmentID字段值在Employees表中对应的记录也应被删除。对于上述参照完整性,在此通过触发器实现。在SQLServerManagementStudio查询编辑窗口中输入如下程序并执行:
7、A、向Employees表插入或修改一条记录时,通过触发器检查记录的DepartmentID值在Departments表中是否存在,若不存在,则取消插入或修改操作。USEYGGL1GOCREATETRIGGEREmployeesInsONdbo.EmployeesFORINSERT,UPDATEASBEGINIF((SELECTins.DEPARTMENTIDFROMinsertedins)NOTIN(SELECTDEPARTMENTIDFROMdepartments))ROLLBACKEND在Employees中增加一条记
8、录,该记录可以插入,看Employees的变化(Departments表没变化):修改DepartmentID值为7,该记录不能插入:B、修改Departments和DepartmentID字段值时,该字段在Employees表中的对应值也进行相应的修改。USEYGGL1GOCREATET