(完整word版)实验7:使用触发器加强完整性-实验报告.doc
上传人:雨巷****珺琦 上传时间:2024-09-10 格式:DOC 页数:4 大小:56KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

(完整word版)实验7:使用触发器加强完整性-实验报告.doc

(完整word版)实验7:使用触发器加强完整性-实验报告.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

GDOU-B-11-112广东海洋大学学生实验报告书实验名称实验七:使用触发器加强完整性课程名称数据库原理与应用成绩学院(系)专业班级学生姓名学号实验地点实验日期实验目的掌握after和Insteadof触发器的使用方法二、实验内容按要求完成给出的下列题目,要求写出相应数据库的脚本语句。(要求写出存储过程的创建和执行语句。)创建触发器,当修改Orders表中某行数据的mShippingCharges和mGiftWrapCharges时,要修改相应行的总价mTotalCost,以保证结果的正确性。创建after触发器,禁止删除ToysBrand表中的记录。创建Insteadof触发器,禁止删除ToysBrand表中的记录。创建触发器,在Toys表中插入数据或者修改数据时,要保证siLowerAge小于siUpperAge的值,否则不能插入或修改。创建触发器,禁止对Shoppers表进行任何更新(增删改)操作。当Toys表中的玩具价格mToyRate增加时,创建一个触发器使得Toys表的mToyRate的属性的平均值不超过28美元,并且最大值不超过55美元,否则不予修改。对Shipment表进行插入操作或者修改操作时,应保证dShipmentDate小于当前日期。对于Recruitment数据库,创建一个视图名为vwCandidateContractRecruiter,其中包含了外部候选人(ExternalCandidate表)的代码,姓名,测试成绩,以及其对应的合同招聘人员(ContractRecruiter表)的代码和名称。并对该视图进行更新,修改外部候选人代码为‘000049’的候选人,更改其测验成绩为87分,并更改相对应的合同招聘人员的名称为‘RogerFederal’。通过创建一个触发器使得能对该视图直接通过下面的Update语句进行更新。updatevwCandidateContractRecruitersetsiTestScore=87,cName=’RogerFederal’wherecCandidateCode=’000049’三、实验过程1.CREATETRIGGERtri1ONOrdersAFTERUPDATEASIFUPDATE(mShippingCharges)ORUPDATE(mGiftWrapCharges)BEGINDECLARE@change1MONEYDECLARE@change2MONEYSELECT@change1=mShippingCharges+mGiftWrapChargesFROMinsertedSELECT@change2=mShippingCharges+mGiftWrapChargesFROMdeletedUPDATEOrdersSETmTotalCost=mTotalCost+(@change1-@change2)WHEREcOrderNo=(SELECTcOrderNoFROMINSERTED)END2.CREATETRIGGERtri2ONToyBrandAFTERDELETEASROLLBACKTRANSACTION3.CREATETRIGGERtri3ONToyBrandINSTEADOFDELETEASPRINT'Cannotdelete'4.CREATETRIGGERtri4_3ONToysAFTERUPDATE,INSERTASDECLARE@lage3SMALLINTDECLARE@uage3SMALLINTSELECT@lage3=siLowerAgeFROMinsertedSELECT@uage3=siUpperAgeFROMinsertedIF(@lage3>=@uage3)BEGINPRINT'Cannotupdateorinsert'ROLLBACKTRANEND5.CREATETRIGGERtri5ONShopperINSTEADOFINSERT,DELETE,UPDATEASPRINT'Cannotinsert,deleteandupdate!'6.CREATETRIGGERtri6ONToysAFTERUPDATEASDECLARE@avgrateMONEYDECLARE@maxrateMONEYSELECT@avgrate=AVG(mToyRate)FROMToysSELECT@maxrate=MAX(mToyRate)FROMToysIF@avgrate>28OR@maxrate>55BEG