《触发器实验(学生.docx》由会员分享,可在线阅读,更多相关《触发器实验(学生.docx(2页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.after触发器(1)在Lineitem 表上定义一个UPDATE触发器,当修改订单明细时,自动修改订单Orders的Totalprice,以保持数据一致性。Totalprice=totalprice + extendedprice*(1-discount) * (1+tax)delimiter $drop trigger if exists TRI_Lineitem_Price_UPDATE $create trigger TRI_Lineitem_Price_UPDATE AFTER UPDATE ON Lineitem for each row BEGIN
2、declare L_valuediff REAL;Set L_valuediff=new.extendedprice*(1-new.discount)*(1+new.tax)-old.extendedprice*(1-old.discout)*(1+old.tax);update orders set totalprice=totalprice+L_valuediff where orderkey=new.orderkey;END $ delimiter ;(2) 在Lineitem 表上定义一个INSERT触发器,当插入一项订单明细时,自动修改订单Orders的Totalprice,以保持数
3、据一致性。(3)在Lineitem 表上定义一个DELETE触发器,当删除一项订单明细时,自动修改订单Orders的Totalprice,以保持数据一致性。(4)验证触发器TRI_Lineitem_Price_UPDATE查看4996号订单的含税折扣总价totalprice激活触发器:修改订单4996号订单第一个明细项的税率(tax),该税率增加0.5%再次查看订单的含税折扣总价是否有变化,如有变化,则是触发器起作用。2.BEFORE触发器(1)在Lineitem 表上定义一个UPDATE触发器,当修改订单明细中时,先检查供应表PartSupp中的可用数量availqty是否足够。delimi
4、ter $drop trigger if exists TRI_Lineitem_Quantity_UPDATE $create trigger TRI_Lineitem_Quantity_UPDATE BEFORE UPDATE ON Lineitem for each row BEGIN declare L_valuediff INT;declare L_availqty INT;Set L_valuediff=new.quantity-old.quantity;select availqty into L_availqtyfrom partsuppwhere partkey=new.pa
5、rtkey and suppkey=new.suppkey;if(L_availqty-L_valuediff=0) thenbeginupdate partsupp set availqty=availqty-L_valuediff where partkey=new.partkey and suppkey=new.suppkey;end;end if;end $delimiter ;(2)在Lineitem 表上定义一个INSERT触发器,当新增一项订单明细中时,先检查供应表PartSupp中的可用数量availqty是否足够。(3)在Lineitem 表上定义一个DELETE触发器,当删除一项订单明细中时,该订单项订购的数量要归还对应的零件供应记录。(4)验证触发器TRI_Lineitem_Quantity_UPDATE查看4996订单第1个明细项的零件和供应商编号、订购数量和可用数量激活触发器:修改订单第1个明细项的可用数量再次查看4996订单第1个明细项的零件和供应商编号、订购数量和可用数量,以验证触发器是否起作用(3)删除触发器TRI_Lineitem_Price_UPDATEDrop trigger TRI_Lineitem_Price_UPDATE;专心-专注-专业
限制150内