实验11:使用触发器加强完整性.docx

实验11:使用触发器加强完整性.docx

ID:62248588

大小:71.38 KB

页数:4页

时间:2021-04-22

实验11:使用触发器加强完整性.docx_第1页
实验11:使用触发器加强完整性.docx_第2页
实验11:使用触发器加强完整性.docx_第3页
实验11:使用触发器加强完整性.docx_第4页
资源描述:

《实验11:使用触发器加强完整性.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GDOU-B-11-112广东海洋大学学生实验报告书实验名称实验11:使用触发器加强完整性课程名称数据库原理及应用成绩学院(系)软件学院专业软件工程班级学生姓名学号实验地点实验日期实验目的:1.掌握after和Insteadof触发器的使用方法实验内容1.创建触发器,当修改Orders表中某行数据的mShippingCharges和mGiftWrapCharges时,要修改相应行的总价mTotalCost,以保证结果的正确性。CREATETRIGGERtrigTotalCostONOrdersA

2、FTERUPDATEASBEGINIF(UPDATE(mShippingCharges)ORUPDATE(mGiftWrapCharges))BEGINDECLARE@orderIdCHAR(6)='';DECLARE@newShippingChargesMONEY=0;DECLARE@newWrapChargesMONEY=0;SELECT@orderId=cOrderNo,@newShippingCharges=mShippingCharges,@newWrapCharges=mGiftWrapChargesFROMINS

3、ERTED;UPDATEOrdersSETmTotalCost=(SELECTSUM(mToyCost)FROMOrderDetailWHEREcOrderNo=@orderId)+@newShippingCharges+@newWrapChargesWHEREcOrderNo=@orderId;ENDEND2.创建after触发器,禁止删除ToysBrand表中的记录。CREATETRIGGERtrigForbidDeleteBrandONToyBrandAFTERDELETEASBEGINPRINT'ToyBrand表中的

4、记录不能被删除'ROLLBACKTRANEND3.创建Insteadof触发器,禁止对Toys表进行删除操作。CREATETRIGGERtrigForbidDeleteToyONToysINSTEADOFDELETEASBEGINPRINT'Toys表中的记录不能被删除'END4.创建触发器,在Toys表中插入数据或者修改数据时,要保证siLowerAge小于siUpperAge的值,否则不能插入或修改。CREATETRIGGERtrigAgeCheckONToysAFTERINSERT,UPDATEASBEGINDECLAR

5、E@lowerAgeSMALLINT=0;DECLARE@upperAgeSMALLINT=0;SELECT@lowerAge=siLowerAge,@upperAge=siUpperAgeFROMINSERTED;IFNOT(@lowerAge<@upperAge)BEGINPRINT'siLowerAge必须小于siUpperAge';ROLLBACKTRAN;ENDEND5.创建触发器,禁止对Shoppers表进行任何更新(增删改)操作。CREATETRIGGERtrigForbidShopperChangeONShop

6、perINSTEADOFINSERT,UPDATE,DELETEASBEGINPRINT'不能对Shopper表进行增删改操作'END6.当Toys表中的玩具价格mToyRate增加时,创建一个触发器使得Toys表的mToyRate的属性的平均值不超过28美元,并且最大值不超过55美元。CREATETRIGGERtrigToyRateONToysAFTERUPDATEASBEGINIFUPDATE(mToyRate)BEGINDECLARE@avgMoneyMONEY=0;DECLARE@maxMoneyMONEY

7、=0;SELECT@avgMoney=AVG(mToyRate),@maxMoney=MAX(mToyRate)FROMToys;IF(@avgMoney>28OR@maxMoney>55)BEGINPRINT'平均值不能超过28美元,最大值不能超过55美元'ROLLBACKTRANENDENDEND7.对Shipment表进行插入操作或者修改操作时,应保证dShipmentDate小于当前日期。CREATETRIGGERtrigShipmentDateONShipmentAFTERINSERT,UPDATEASBEGINDE

8、CLARE@curDateDATE=GETDATE();DECLARE@newDateDATE;SELECT@newDate=dShipmentDateFROMINSERTED;IF(@newDate>=@curDate)BEGINPRINT'dShipmentDate必须小

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

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

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