本文格式为Word版,下载可任意编辑
— 2 —
SQL实验报告
测验四触发器测验
(一)
after
触发器
(1 1 )
在l l i neitem 表上定义一个 aice
real, @discount
real, @ta x real -ﻩ - 开启游标
open cursor_i ns erte d --ﻩ - 读取游标
fe tc h
nex t
f rom
cu rsor_ins erted
into
@o rd erkey,li nen umbe er r, ex ten ded pric e,dis count,tax ihwﻩ ile @@FE TCH_ STATU S=0 ebﻩ egin
-格价新得算计新重存保量变个一明声ﻩﻩ 声明一个变量保存重新计算得新价格
cedﻩ clare @n ew_tot alprice real
celesﻩ ct new _to ta lprice= @extend edp rice *( 1-d is count) *(1+tax) -新更量变格价总得新用ﻩﻩ 用新得总价格变量更新orders 表得totalpri ce
ﻩ u pda te
or ders s et
本文格式为Word版,下载可任意编辑
— 5 —
t ota lpric e=total pric e+ @new_ tota lpr ice w wh he re o rderke y=orderkey
tefﻩ etch next from cursor_ ins erte d into o rder key, @l inen umber,e xtended dp ric e, @disc ou nt, @t ax
e end aedﻩ deall oca te cu rsor_in serted en d
(3)
在l in e ite m表上定义一个a ft er触发器, , 当删除一项订单明细记录时, ,
自动修改 orders 表得 tot a lprice, 以保证数据一致性
CREATE TRI GG ER trig _line item_price_de let e
on line item fo r de let e
A AS begin
- -声明游标变量指向delet ed 表
de clar e curso r_d eleted cursor
re ad _on ly
es
rofﻩﻩ ele ct ord erk ey,line numbe r,extende dp rice,discoun t, tax
本文格式为Word版,下载可任意编辑
— 6 —
from
del eted -ﻩ -- 声明变量获取查找信息
declare ord erkey int,linenum be r
int,extendedp ri ce r eal,discou nt real,ta x real -ﻩ -
开启游标 epoﻩ en c urso r_ deleted
标游取读ﻩ 读取游标 efﻩ etch next fr om cur sor_delete d in to
order ke y,l inenumb er,ext end dedprice, @di scoun t,tax
wh ile @FETCH_STATUS=0
begi n
- 声明一个变量保存重新计算得新价格
ﻩ declare @ne w_ to talpric e real
ﻩ s selec t @new_t otalpr ice= @exte nde dpri ce*(1- @disco unt) *(1+ tax)
-ﻩ - 用新得总价格变量更新orders 表得tot alp rice uﻩﻩ upd ate
orders set t otalpri ce=to talpr ice- @new _totalp rice wh er e order key= @ord erkey
fetch
本文格式为Word版,下载可任意编辑
—
SQL实验报告 来自淘豆网m.daumloan.com转载请标明出处.