You are on page 1of 18

T hc lp trnh trigger trong Microsoft SQL MrTD 0975689509 Ti liu su tm v tng hp

Khi c thao tc Insert, Update hoc Delete xy ra trn table, cc thao tc ny s kch hot trigger, bin c to ra mt hoc nhiu table gi. Cc table ny c th xem nh l cc s ghi nhn giao tc (transaction logs) ca bin c. C hai loi : table Inserted v Deleted. 1. Cc lnh h thng v hm s dng trong trigger a. Mnh Update IF update(tencot), Xc nh c hay khng mt bin c insert hoc update xy ra trn ct ch ra ti mc tham s Tn_ct ca mnh update If update(tencot) Begin Khi lnh End Mnh Columns_Update , Kim tra cc ct c Update. Thay v tr v gi tr TRUE hoc FALSE, (COLUMNS_UPDATE()) tr v mt gi tr dng nh phn c ngha ch ra nhng ct no c kim tra khi insert hoc update. Hm @@ROWCOUNT : Tr v s dng b nh hng bi cu lnh TSQL ngay trc trong trigger. Cu lnh RETURN : Nu khng c dng no b nh hng bi bin c INSERT, UPDATE hoc DELETE, trigger vn kch hot. Trong trng hp ny, bn c th s dng cu lnh RETURN chm dt vic thi hnh khng cn thit cc cu lnh ca trigger. Lnh RETURN c s dng ti cc v tr trong trigger m ti 1o bn mun chm dt vic thi hnh tip tc cc cu lnh khc ca trigger. Cu lnh RAISERROR : c s dng hin th thng bo li. Bn cng c th dng n cho vic gi ra mn hnh cu thng bo mang tnh cht cnh bo. Chui thng bo khi s dng RAISERROR s c gi v cho client t server.

b.

c. d.

e.

f. Cu lnh ROLLBACK TRANSACTION : y l cu lnh quan trng rt hay dng trong trigger, n c s dng trong trng hp bn mun b qua ton b thao tc trc l nguyn nhn kch hot trigger hoc quay lui ton b l x l (batch) ca trigger. Mt li khng xc nh no cng lm cho quay lui ton b giao tc. Bn khng nn t cu lnh ROLLBACK TRANSACTION trong trigger nu mc tiu ca bn l hon tt giao tc trong tt c cc trng hp, ngoi tr c li khng xc nh no xy ra trong lc thc hin giao tc.

I.

Trigger kim tra rng buc d liu :


d hiu ti chia cc hnh ng cp nht d liu ra lm 3 s kin ri rc : thm, sa v xa nhm gip cc bn phn bit r rng cc x l thng dng bn trong cc s kin . a. Khi thm mi mt tp tin

Trigger ca s kin ny s t ng kch hot khi d liu trong bng c thm mi vo bng d liu. Thng thng bn trong trigger s c mt s cc kim tra rng buc ton vn d liu nh l : Kha ngoi. Min gi tr. Lin thuc tnh trong cng mt bng. Lin thuc tnh ca nhiu bng khc nhau. Khi cc gi tr d liu thm mi vi phm cc rng buc ton vn d liu th trigger s thng bo cho ngi dng bit v khng lu li cc thng tin ca dng d liu va c thm mi vo bn trong bng. Trong cc trigger thm mi d liu th cc d liu va mi thm vo s c lu tr tm thi trong bng Inserted, do chng ta s tham chiu n bng Inserted ly ra cc gi tr d liu va mi thm dng trong nhng kim tra rng buc ton vn d liu. V d :

Xy dng trigger trong bng PNHAP kim tra cc rng buc ton vn d liu khi ngi dng thm mi thng tin ca mt phiu nhp hng cho mt n t hng trc . Cc rng buc ton vn d liu bao gm : Kha ngoi : cn kim tra s t hng phi tn ti trong bng n t hng. Min gi tr : cn kim tra ngy giao hng phi sau ngy t hng. Chng ta thc hin lnh CREATE TRIGGER nh sau :

kim tra cc hot ng bn trong trigger c ng hay khng, chng ta cn phi ln lt thc hin cc lnh INSERT INTO thm d liu vo bng PNHAP cho cc trng hp m chng ta bin lun trong trigger. Trng hp 1 : Vi phm rng buc ton vn s n t hng khng tn ti trong bng DONDH.

Kt qu li tr v :

Trng hp 2 : Vi phm rng buc ton vn ngy giao hng trc ngy t hng.

Kt qu li tr v :

Cui cng khi nhp thng tin ca mt phiu nhp hng khng vi phm cc rng buc ton vn d liu.

Kt qu tr v hnh ng thm d liu mi thnh cng.

b. Khi hy b mu tin : Khi gi tr d liu trong bng b hy nu c vi phm rng buc ton vn d liu kha ngoi th trigger s thng bo cho ngi dng bit v khng hy thng tin ca cc dng d liu. Trong cc trigger hy b d liu th d liu va b hy b s c lu tr tm thi trong bng Deleted., chng ta s tham chiu n bng Deleted ly ra gi tr ca cc d liu va b hy b dng cho cc kim tra rng buc ton vn d liu kha ngoi. V d : Khi xa mt s t hng bn trong bng DONDH cn phi kim tra cc rng buc ton vn d liu sau : Kim tra xem n t hng b xa c nhp hng cha ? Nu c nhp hng ri th thng bo khng th xa n t hng c. Ngc li th xa t ng d liu lin quan bn bng chi tit n t hng (CTDONDH). Chng ta thc hin lnh CREATE TRIGGER nh sau :

Cng hon ton ging nh v d trn, chng ta cn phi ln lt thc hin cc lnh DELETE hy b cc dng d liu trong bng DONDH nhm kim tra tnh ng n ca cc hnh ng bn trong trigger chng ta vit. Trng hp 1 : Vi phm rng buc ton vn kha ngoi v s n t hng D002 c nhp hng ri.

Kt qu li tr v :

Trng hp 2 : Xa thnh cng ton b thng tin n t hng D006 trong c hai bng DONDH v CTDONDH (v n t hng ny cha c nhp hng v).

Kt qu tr v 3 dng b xa trong bng CTDONDH v 1 dng trong DONDH.

c. Khi sa i mu tin : Thng thng i vi vic thay i d liu trn bng chng ta s hn ch vic sa i d liu, ch cho php ngi s dng sa i d liu trn mt s ct nht nh no bn trong bng. Thng thng trong trigger sa i chng ta c th tham chiu n cng lc hai bng lun l Inserted v Deleted. V d : Khi sa i thng tin ca mt s t hng bn trong bng DONDH cn phi kim tra cc rng buc ton vn d liu sau : Khng cho php sa i d liu ti cc ct s t hng hoc m nh cung cp v khi d liu s b nh hng n nhiu bng lin quan khc. Khi sa i gi tr ct ngy t hng th phi m bo lun lun trc ngy nhp hng u tin ca s t hng (nu n t hng c nhp hng). Chng ta thc hin lnh CREATE TRIGGER nh sau :

Chng ta cn phi ln lt thc hin cc lnh UPDATE sa i d liu trong bng DONDH nhm kim tra tnh ng n ca trigger vit. Trng hp 1 : Sa i d liu ct s t hng hoc ct m nh cung cp.

Hoc

Kt qu li tr v :

Trng hp 2 : n t hng D002 c ngy t hng l 30/01/2002, ngy nhp hng d kin l 02/02/2002 v c nhp hng ln u vo ngy 31/01/2002. Gi s chng ta ra lnh sa i gi tr ngy t hng li thnh ngy 01/02/2002.

Kt qu li tr v :

II.

Trigger cp nht gi tr t ng :

1. Khi thm mi mu tin :

Khi gi tr ca cc d liu thm mi c kim tra hp l so vi cc rng buc ton vn d liu th cc d liu ny s c cp nht tng gi tr ti mt ct no ca cc bng lin quan. V d : Khi thm mi cc thng tin ca chi tit mt phiu nhp hng vo bng CTPNHAP, chng ta cn kim tra cc rng buc ton vn d liu : Kim tra s phiu nhp phi c trong bng PNHAP. Kim tra m vt t phi c trong danh sch chi tit danh sch cc m vt t c trong chi tit n t hng trc . Kim tra tng s lng nhp hng vn cn t hn s lng t hng ca vt t . Nu tt c cc rng buc ton vn d liu trn u hp l th tng gi tr ca ct tng s lng nhp trong bng TONKHO v ct tng gi tr trong bng PNHAP. Chng ta thc hin lnh CREATE TRIGGER nh sau :

2. Khi hy b mu tin : V d : Khi hy b thng tin chi tit cc phiu nhp hng trong bng CTPNHAP, chng ta s gim gi tr ct tng s lng nhp trong bng TONKHO v ct tng gi tr nhp trong bng PNHAP. Chng ta thc hin lnh CREATE TRIGGER nh sau :

3. Khi sa i mu tin : Ging nh cc hnh ng thm v hy b trc y, sau khi mu tin b sa i, chng ta phi tnh ton cp nht li gi tr cc ct ca cc bng c lin quan khp vi gi tr mi va c sa i. Vic cp nhp ny c th l tng hoc gim so vi gi tr c trc han ton ty thuc vo gi tr chnh lch gia gi tr mi c sa i v gi tr c trc . Do th nguyn tc chung trong cc trigger sa i d liu l cp nht li gi tr chnh lch sau khi v trc khi sa i d liu, ty thuc vo s chnh lch ny l m hoc dng m gi tr c cp nht s gim hoc tng so vi gi tr hin hnh. V d : Khi sa i thng tin ca chi tit mt phiu nhp hng vo bng CTPNHAP, chng ta cn kim tra cc rng buc ton vn d liu : Khng cho php sa i cc ct : s phiu nhp hoc m vt t. S lng nhp hng sau khi sa i phi m bo : tng s lng nhp khng vt qu s lng t hng ban u.

Nu tt c cc rng buc ton vn d liu trn u hp l th cp nht li gi tr ca ct tng s lng nhp trong bng TONKHO v ct tng gi tr trong bng PNHAP. Chng ta thc hin lnh CREATE TRIGGER nh sau :

Tm li, vic phn chia, t chc cc kim tra rng buc ton vn d liu phc tp hoc cc cp nht d liu t ng trong i tng trigger s lm cho cc x l c tp trung ti my ch v c lp vi ngn ng lp trnh ti my trm. iu ny lm cho tc ca cc ng dng theo m hnh khch ch c nhanh hn.

You might also like