触发器实验(学生)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.after触发器(1)在Lineitem表上定义一个UPDATE触发器,当修改订单明细时,自动修改订单Orders的Totalprice,以保持数据一致性。Totalprice=totalprice+extendedprice*(1-discount)*(1+tax))delimiter$droptriggerifexistsTRI_Lineitem_Price_UPDATE$createtriggerTRI_Lineitem_Price_UPDATEAFTERUPDATEONLineitemforeachrowBEGINdeclareL_valuediffREAL;SetL_valuediff=new.extendedprice*(1-new.discount)*(1+new.tax)-old.extendedprice*(1-old.discout)*(1+old.tax);updateorderssettotalprice=totalprice+L_valuediffwhereorderkey=new.orderkey;END$delimiter;(2)在Lineitem表上定义一个INSERT触发器,当插入一项订单明细时,自动修改订单Orders的Totalprice,以保持数据一致性。(3)在Lineitem表上定义一个DELETE触发器,当删除一项订单明细时,自动修改订单Orders的Totalprice,以保持数据一致性。(4)验证触发器TRI_Lineitem_Price_UPDATE查看4996号订单的含税折扣总价totalprice激活触发器:修改订单4996号订单第一个明细项的税率(tax),该税率增加0.5%再次查看订单的含税折扣总价是否有变化,如有变化,则是触发器起作用。2.BEFORE触发器(1)在Lineitem表上定义一个UPDATE触发器,当修改订单明细中时,先检查供应表PartSupp中的可用数量availqty是否足够。delimiter$droptriggerifexistsTRI_Lineitem_Quantity_UPDATE$createtriggerTRI_Lineitem_Quantity_UPDATEBEFOREUPDATEONLineitemforeachrowBEGINdeclareL_valuediffINT;declareL_availqtyINT;SetL_valuediff=new.quantity-old.quantity;selectavailqtyintoL_availqtyfrompartsuppwherepartkey=new.partkeyandsuppkey=new.suppkey;if(L_availqty-L_valuediff=0)thenbeginupdatepartsuppsetavailqty=availqty-L_valuediffwherepartkey=new.partkeyandsuppkey=new.suppkey;end;endif;end$delimiter;(2)在Lineitem表上定义一个INSERT触发器,当新增一项订单明细中时,先检查供应表PartSupp中的可用数量availqty是否足够。(3)在Lineitem表上定义一个DELETE触发器,当删除一项订单明细中时,该订单项订购的数量要归还对应的零件供应记录。(4)验证触发器TRI_Lineitem_Quantity_UPDATE查看4996订单第1个明细项的零件和供应商编号、订购数量和可用数量激活触发器:修改订单第1个明细项的可用数量再次查看4996订单第1个明细项的零件和供应商编号、订购数量和可用数量,以验证触发器是否起作用(3)删除触发器TRI_Lineitem_Price_UPDATEDroptriggerTRI_Lineitem_Price_UPDATE;

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功