实验四触发器实验(一)after触发器(1)在lineitem表上定义一个after触发器,当修改列项目extendedpricediscounttax时,要把orders表的totalprice一起修改,以保证数据一致性CREATETRIGGERtrig_lineitem_price_updateonlineitemforupdateasbeginif(UPDATE(extendedprice)orUPDATE(tax)orUPDATE(discount))begin--声明游标变量指向inserted表declarecursor_insertedcursorread_onlyforselectorderkey,linenumber,extendedprice,discount,taxfrominserted--声明变量获取查找信息******@orderkeyint,***@linenumberint,***@extendedpricereal,***@discountreal,***@taxreal--打开游标opencursor_inserted--读取游标fetchnextfromcursor_******@orderkey,***@linenumber,***@extendedprice,***@discount,***@taxwhile@***@FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格******@new_******@new_totalprice=***@extendedprice*(1-***@discount)*(1+***@tax)--用新的总价格变量更新orders表的totalpriceupdateorderssettotalprice=***@new_totalpricewhereorderkey=***@orderkeyfetchnextfromcursor_******@orderkey,***@linenumber,***@extendedprice,***@discount,***@taxenddeallocatecursor_insertedendend(2)在lineitem表上定义一个after触发器,当增加一项订单明细时,自动修改orders表的totalprice,以保证数据一致性CREATETRIGGERtrig_lineitem_price_insertonlineitemforinsertasbegin--声明游标变量指向inserted表declarecursor_insertedcursorread_onlyforselectorderkey,linenumber,extendedprice,discount,taxfrominserted--声明变量获取查找信息******@orderkeyint,***@linenumberint,***@extendedpricereal,***@discountreal,***@taxreal--打开游标opencursor_inserted--读取游标fetchnextfromcursor_******@orderkey,***@linenumber,***@extendedprice,***@discount,***@taxwhile@***@FETCH_STATUS=0begin--声明一个变量保存重新计算的新价格******@new_******@new_totalprice=***@extendedprice*(1-***@discount)*(1+***@tax)--用新的总价格变量更新orders表的totalpriceupdateorderssettotalprice=totalprice+***@new_totalpricewhereorderkey=***@orderkeyfetchnextfromcursor_******@orderkey,***@linenumber,***@extendedprice,***@discount,***@taxenddeallocatecursor_insertedend(3)在lineitem表上定义一个after触发器,当删除一项订单明细记录时,自动修改orders表的totalprice,以保证数据一致性CREATETRIGGERtrig_lineitem_price_deleteonlineitemfordeleteASbegin--声明游标变量指向deleted表declarecursor_deletedcursorread_onlyforselectorderkey,linenumber,extendedprice,discount,taxfromdeleted--声明变量获取查找信息******@orderkeyint,***@li
SQL实验报告 来自淘豆网m.daumloan.com转载请标明出处.