You are on page 1of 35

LI NI U

CHNG 1. TRIGGER
1.1. Gii thiu v nh ngha Cht lng ca mt CSDL c nh gi mt phn bi tnh nht qun v chnh xc ca d liu trong CSDL. m bo tnh ton vn d liu ta c nhiu phng php, trigger l mt phng php hu hiu. Trigger l mt loi stored procedure (th tc lu tr) c bit, n c nh ngha t ng thc thi khi c mt cu lnh Update, Insert, hoc Delete c pht ra trn bng hoc View. im khc bit gia th tc lu tr v trigger l: Cc th tc lu tr c thc thi khi ngi s dng c li gi n chng, cn cc trigger li c "gi" t ng khi xy ra thao tc lm thay i d liu trong cc bng. Trigger l mt cng c mnh m n c th dng rng buc cc qui tc qun l mt cc t ng khi d liu b hiu chnh. Trigger cng c th ni rng cc tnh ton vn kim sot logic ca SQL Server. Trigger t ng thc thi, khng th gi mt trigger thi hnh mt cch trc tip. Mi mt trigger c to ra v gn lin vi mt bng no trong c s d liu. Khi d liu trong bng b thay i (tc l khi bng chu tc ng ca cc cu lnh INSERT, UPDATE hay DELETE) th trigger s c t ng kch hot. S dng trigger mt cch hp l trong c s d liu s c tc ng rt ln trong vic tng hiu nng ca c s d liu. Cc trigger thc s hu dng vi nhng kh nng sau: Mt trigger c th nhn bit, ngn chn v hu b c nhng thao tc lm thay i tri php d liu trong c s d liu. Cc thao tc trn d liu (xo, cp nht v b sung) c th c trigger pht hin ra v t ng thc hin mt lot cc thao tc khc trn c s d liu nhm m bo tnh hp l ca d liu.

Thng qua trigger, ta c th to v kim tra c nhng mi quan h phc tp hn gia cc bng trong c s d liu m bn thn cc rng buc khng th thc hin c. Trigger l i tng c bit c to trn mt bng v l mt phn ca c s d liu. Trigger c th truy vn ti cc bng khc v c th bao gm cc cu lnh T - SQL phc tp. Chng ta c th to trigger cho mi hnh ng trn bng hoc c th kt hp 2 hoc 3 hnh ng trong mt trigger. V d: Khi mun thc hin mt thao tc DELETE trn bng EMP th ng thi d liu b xo s c INSERT vo bng Ret_Emp, nh hnh di y:

Sau khi thc hin trigger DELETE, ta c kt qu sau:

Trong trng hp c nhiu trigger cng lin quan n mt i tng th ta phi xc nh th t thc hin ca chng. Th tc h thng sp_settiggerorder cho php chng ta lm iu ny. nh ngha mt trigger bao gm cc yu t sau: Trigger s c p dng i vi bng no ? Trigger c kch hot khi cu lnh no c thc thi trn bng: INSERT, UPDATE, DELETE ? Trigger s lm g khi c kch hot ? 1.2. S dng trigger khi no ? Ta ch s dng trigger khi m cc bin php bo m data intergrity khc nh Constraints khng th tho mn yu cu ca ng dng. Nn nh Constraint thuc loi Declarative Data Integrity cho nn s kim tra data trc khi cho php nhp vo table trong khi Trigger thuc loi Procedural Data Integrity nn vic insert, update, delete xy ra ri mi kch hot trigger. Chnh v vy m ta cn cn nhc trc khi quyt nh dng loi no trong vic m bo Data Integrity. Khi mt c s d liu c phi chun - denormalized (Ngc li qu trnh chun ho - normalization), s c mt s d liu tha (redundant) c cha trong nhiu table. Ngha l s c mt s d liu c cha cng mt lc hai hay nhiu ni khc nhau. Khi m bo tnh chnh xc th khi d liu c cp nht mt bng ny th cng c cp nht mt cch t ng cc bng cn li bng trigger. V d: Ta c table Item trong c field Barcode dng xc nh mt mt hng no . Item table c vai tr nh mt cun catalog cha nhng thng tin cn thit m t tng mt hng. Ta c mt table khc l Stock dng phn nh mn hng c thc trong kho nh c nhp v ngy no, c cung cp bi i l no, s lng bao nhiu (Tc l nhng thng tin v mn hng m khng th cha trong item table c). Table ny cng c field Barcode xc nh mn hng trong kho. nh vy thng tin v Barcode c cha hai ni khc 4

nhau do ta cn dng Trigger m bo l Barcode hai ni lun c ng b. i khi ta c nhu cu thay i dy chuyn (cascade) ta c th dng trigger m bo chuyn . Ngha l khi c s thay i no table ny th mt s table khc cng c thay i theo m bo tnh chnh xc. V d nh khi mt mn hng c bn i th s lng hng trong table item gim i mt mn ng thi tng s hng trong kho (Stock table) cng phi gim theo mt cch t ng. nh vy ta c th to mt trigger trn item table mi khi mt mn hng c bn i th trigger s c kch hot v gim tng s hng trong Stock table. Hay ni cch khc, s dng trigger khi: Rng buc ton vn d liu cho ph hp vi m hnh quan h CSDL. Kim sot d liu hin ti khi c thay i n gi tr trong mu tin trong bng. Kim tra d liu nhp vo ph hp vi mi quan h d liu gia cc bng. nh ngha thng bo li ca ngi dng. So snh trng thi ca d liu trc v sau hiu chnh. Thc hin cc x l c thit k thi hnh ti server (trong m hnh client/server). Cc x l m ta mun chng s c t ng thc hin khi c thao tc INSERT, UPDATE hocDELETE xy ra. 1.3. c im ca Trigger C 3 thao tc c bn lm thay i d liu trn cc bng ca c s d liu l thao tc thm (insert), thao tc sa (update) v thao tc xa (delete). Nh vy m bo d liu nht qun v ng n, ta cn kim tra vic thc hin ca 3 thao tc ny. C 2 cch kim tra : kim tra mc giao din v kim tra mc c s d liu. Kim tra mc giao din : cng vic ny chnh l cng vic lp trnh trn cc mn hnh giao din. Kim tra mc c s d liu : cng vic ny c thc hin bi cc i tng constraint hoc trigger. 5

i vi cc rng buc ton vn d liu n gin nh kim tra cc rng buc min gi tr, kim tra cc rng buc gia cc thuc tnh trn cng mt bng d liu, ta nn s dng i tng constraint. i vi cc rng buc ton xn d liu phc tp khc l nhng quy tc c nh ngha dng kim tra tnh ton vn ca d liu trn nhiu ct hoc nhiu dng ca cc bng khc nhau. Khi bt buc chng ta phi s dng i tng trigger, i tng ny cho php chng ta xy dng cc cu lnh bn trong n vi mc tiu l cc cu lnh ny s c thc hin khi cc thao tc lm thay i d liu xy ra trn bng d liu m n gn. Mt trigger gn vi duy nht mt i tng table hoc mt i tng view. c im ca trigger: Mt trigger c th thc hin nhiu cng vic (theo kch bn), c th nhiu s kin kch hot thc thi trigger, c th tch ri cc s kin trong mt trigger. Trigger khng c to trn bng template hay system. Trigger ch thc thi t ng thng qua cc s kin m khng thc hin bng tay. Trigger s dng c vi khung nhn. Khi trigger thc thi theo cc s kin Insert hoc Delete th d liu khi thay i s c chuyn sang cc bng Inserted Table, Deletes Table, l 2 bng tm thi ch cha trong b nh, cc bng ny ch c s dng vi cc lnh trong trigger. Hai loi trigger trong SQL Server 2000: INSTEAD OF v AFTER (mc nh) INSTEAD OF: Trigger ny ch c trong SQL Server 2000. Trigger ny s thi hnh thay cho cc cu lnh Insert, Delete, Update. Nh vy khi to trigger kiu ny phi vit li cc cu lnh Insert, Delete, Update i vi d liu. C th p dng cho c bng v view, tuy nhin n khng cho php p dng vi cc view c la chn WITH CHECK OPTION.

FOR TRIGGER & AFTER TRIGGER: y l loi ngm nh, cc trigger ny ch c thc thi khi tt c cc thao tc Insert, Update hay Delete thc hin xong. Tt c cc hnh ng tham gia v kim tra constraint cng phi c thc hin xong trc khi trigger thi hnh. Loi trigger ch c ci t trn bng, khng ci t c trn view. Khi to trigger v khng ch nh r th mc nh l AFTER, FOR ch l t kho tng thch ngc vi cc phin bn trc ca SQL Server. 1.4. To trigger Ging nh cc i tng khc trong Microsoft SQL Server, bn c 2 cch c th to mi mt trigger : s dng cc cu lnh T-SQL hoc dng tin ch Enterprise Manager. 1.4.1. S dng tin ch Enterprise Manager Tin ch Enterprise Manager cho php bn to cc trigger mt cch trc quan hn. Bn c th thc hin theo cc bc sau : Bc 1 : Khi ng tin ch Enterprise Manager. Chn tn mt bng mun to mi trigger c lin quan, kch hot thc n tt v chn tip chc nng All Task (Manage Triggers).

Bc 2 : Xut hin mn hnh ch nh cc thuc tnh lin quan n trigger. 7

Trong mn hnh nh ngha trigger mi ln lt ch nh tn ca trigger v cc cu lnh cn thit bn trong trigger thc hin kim tra cc rng buc ton vn d liu. Nhn vo nt Check Syntax h thng kim tra c php cc lnh bn trong trigger c hp l hay khng. Sau cng nhn nt OK lu li ni dung ca trigger m chng ta to ra. To trigger bng cu lnh: S dng cu lnh CREATE TRIGGER c c php chung nh sau: CREATE TRIGGER tn_trigger ON {table | view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF}{[DELETE] [,] [INSERT] [,] [UPDATE]} AS sql_statement Trong : + WITH ENCRYPTION: ngn chn ngi dng khc xem vn bn ca trigger. + AFTER: Trigger c thc thi sau khi tt c cc cu lnh SQL gy ra trigger thc thi thnh cng. AFTER l kiu mc nh nu t kho FOR c dng. Khng th nh ngha trigger AFTER cho view. + INSTEAD OF: 8

Trigger c thc thi thay cho cc cu lnh SQL gy ra trigger. INSTEAD OF trigger dng c cho view. + {[DELETE] [,] [INSERT] [,] [UPDATE]}: Xc nh cc cu lnh m khi thc thi trn bng hoc view s gy ra trigger. 1.4.2. S dng lnh T_SQL Bn c th s dng cu lnh CREATE TRIGGER to mt trigger bng cch s dng tin ch SQL Query Analyzer hoc s dng cng c dng du nhc lnh (command-prompt) in hnh nh cng c sql. C php CREATE TRIGGER tn_trigger ON {table | view} [WITH ENCRYPTION] {FOR | AFTER | INSTEAD OF}{[DELETE] [,] [INSERT] [,] [UPDATE]} AS sql_statement 1.4.2.1. Mnh CREATE TRIGGER Vic to trigger bt u vi mnh CREATE TRIGGER theo sau l tn ca trigger. Trigger khng cho php xc nh tn ca c s d liu nh l tin t ca tn i tng. Do vy cn chn c s d liu vi mnh USE Tn_database v t kha GO trc cu lnh to trigger. Cn phi ch nh t kha GO bi v cu lnh CREATE TRIGGER phi l cu lnh u tin trong mt query batch (Mt batch l mt l bao gm cc cu lnh T-SQL kt thc bi t kha GO). Mc nh, quyn ch s hu table c php to trigger. Ch : Nu bn s dng tin ch SQL Query Analyzer v trong tin ch ny bn chn ng database cn to trigger, khi bn c th khng cn phi s dng mnh USE Tn_database. V d :

Trong trng hp bn mun tn trigger l mt chui gm c c cc khong trng, bn phi t chng trong cp du [ ]. V d :

1.4.2.2. Mnh ON Trigger phi c gn ti table hoc view, s dng mnh ON cho bit table hoc view no c p dng. V d :

Mt trigger ch p dng cho mt table hoc view. Nu bn cn p dng thao tc trigger ging nh vy cho mt table khc trong c s d liu, bn phi to mt trigger vi mt tn khc, v copy ton b ni dung sang trigger mi, sau p dng n cho table khc. Loi trigger mc nh AFTER ch c th p dng cho mt table. Loi trigger mi INSTEAD OF c th p dng hoc cho mt table hoc cho mt view. 1.4.2.3. Cc mnh FOR, AFTER, INSTEAD OF Trigger phi c gn ti table hoc view, s dng mnh ON cho bit table hoc view no c p dng. Loi bin c trigger phi c ch nh khi trigger c to. Cc bin c gm c : INSERT, UPDATE v DELETE. Mt trigger c th c kch hot bi mt, hai hoc c 3 bin c xy ra. Nu bn mun trigger kch hot trn tt c cc bin c th theo sau cc mnh FOR, AFTER hoc INSTEAD OF l cc t kha INSERT, UPDATE v DELETE. Cc kiu bin c ny c th c lit k theo th t bt k. V d : 10

Trigger loi AFTER :

Ch : Mnh FOR c ngha tng ng vi mnh AFTER. Trigger loi INSTEAD OF :

Ch : Mnh FOR c thay th vi INSTEAD OF. 1.4.2.4. Mnh AS Mnh AS c khai bo trc cc cu lnh T-SQL trong trigger. Khi s dng CREATE TRIGGER, bn phi ch thc hin nhng iu ct li sau : Xc nh tn ca trigger. Tn ca trigger c tnh duy nht trn 1 c s d liu (database). Ch nh table hoc view m trn trigger c p dng. Ch nh trigger thuc loi INSTEAD OF hoc AFTER. Ch nh mt bin c hoc nhiu bin c kch hot trigger. Cc cu lnh tng ng vi nhim v m bn mun trigger thc hin. Cc ty chn : trigger cho php nhn bn (replicate) hay khng, trigger c c m ha (encrypt) hay khng. Ch : Mnh WITH APPEND c s dng trong cu lnh CREATE TRIGGER cc phin bn trc, khng cn c s dng trong phin bn SQL Server 2000. 1.5. Phn loi trigger: Ta c th phn loi trigger theo thi gian thc hin nh: BEFORE v AFTER. 11

BEFORE trigger: Trigger c kch hot trc khi thc hin cu lnh. Vic ny c th cho php ta loi bt cc php x l khng cn thit, thm ch c th rollback d liu trong trng hp c th gy ra cc ngoi l (exception). Trigger thuc loi ny thng c s dng i vi cc thao tc INSERT hoc UPDATE. AFTER trigger: Cu lnh c thc hin xong th trigger mi c kch hot. Thc hin cc cng vic thng phi lm sau khi thc hin cu lnh. INSTEAD OF trigger: Loi trigger ny cho php ngi s dng c th thay i mt cch trong sut d liu ca mt s view m khng th thc hin thay i trc tip c. Vi INSTEAD OF trigger, ta c th thc hin vi c ba thao tc: insert, update, delete. Ta cng c th phn loi trigger theo loi cu lnh kch hot nh: INSERT, UPDATE, DELETE. Trong cc trigger thuc mt trong ba loi lnh: INSERT, UPDATE,DELETE. Trigger UPDATE cn phi ch r thm tn ct d liu kch hot trigger mi khi gi tr d liu trong b thay i. Bn trong Trigger c th c cha cc lnh thao tc d liu. Do , cn phi trnh trng hp lp li theo kiu quy. Mt cch khc ta cng c th phn loi trigger theo s ln kch hot. theo s c 02 loi trigger: Trigger mc lnh: Trigger c kch hot mi khi thc hin cu lnh. ssTrigger mc dng lnh: Trigger c kch nhiu ln ng vi mi dng d liu chu nh hng bi thao tc thc hin lnh.

12

Hnh: Th t thc hin trigger Ta c th to trigger thng qua lnh script. C php lnh to trigger mc cu lnh: CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON table_name BEGIN SQL Block; END; C php lnh to trigger mc dng d liu: CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON table_name [REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN condition] BEGIN SQL Block; END; Trong : + trigger _name: Tn trigger. + timing: Thi gian kch hot trigger. + event: Loi cu lnh kch hot trigger. + referencing: Tn bin thay th cho gi tr trc v sau thay i ca dng d liu ang x l. + FOR EACH ROW :Trigger thuc loi tc ng trn dng d liu. + WHEN: Ch ra mt s iu kin rng buc thc hin trigger. + table_name: Tn bng d liu c gn trigger trn PL/SQL Block Ni dung khi lnh SQL v PL/SQL trongtrigger. V d: CREATE OR REPLACE TRIGER secure_emp BEFORE INSERT ON emp BEGIN

13

IF

TO_CHAR(sysdate,DY)

IN

(SAT,SUN)

OR

TO_CHAR(sysdate,HH24) NOT BETWEEN 08 AND 18 THEN RAISE_APPLICATION_ERROR (-20500, Thi gian lm vic khng ph hp); END IF; END; CREATE OR REPLACE TRIGER audit_emp_values AFTER DELETE OR INSERT OR DELETE ON emp FOR EACH ROW BEGIN INSERT INTO audit_emp_values (user_name, timestamp, id, old_last_name, new_last_name, old_title,new_tile, old_salary, new_salary) VALUES (USER, SYSDATE, :old.empno, :old.ename, :new.ename,:old.job, :new.job, :old.sal, :new.sal); END; 1.6. Cc kiu trigger? 1.6.1 Insert trigger + Thc hin bt c khi no c s thm d liu vo bng. + Cch thc hin ca Insert trigger: - Thm bn sao ca nhng dng d liu c thm vo Inserted table. - Kim tra nhng dng d liu trong Inserted table, xc nh xem n c hp l khng. - Nu hp l th thm nhng dng vo trigger table. V d: Vd sau to trigger c tn l CheckFare tc ng ln bng Flight_detail mi khi c hnh ng thm (INSERT) d liu. Trigger ny m bo rng gi v ca hng 'FC' trn chuyn bay Indian Airlines khng c vt qu 8000. Cu lnh nh sau:

14

Kt qu:

1.6.2. Update trigger + Thc hin bt c khi no c s cp nht d liu trong bng. + Cch thc hin ca Update trigger: - Chuyn nhng dng d liu c (trc khi cp nht) vo Deleted table. - Thm nhng dng c gi tr mi vo Inserted table, v trigger table. - Kim tra li cc gi tr trong Deleted v Inserted tables nu c bt c yu cu lin quan no. C th c to thc hin cp nht trn mt ct hoc trn ton b bng. V vy, ngi ta chia update trigger thnh 2 loi: 1.6.2.1. Column Level Trong v d ny, chng ta to mt UPDATE trigger tc ng ln ct Meal_code ca bng Meal. Trigger ny s thc hin mi khi c hnh ng cp nht d liu trn ct Meal_code. Cu lnh nh sau:

15

Sau khi to ra trigger, s khng c php ton cp nht no c thc hin trn ct Meal_code, v h thng s tr li thng bo nh trnn: Kt qu:

1.6.2.2. Table Level Trong v d ny, chng ta s to ra mt trigger m bo rng ct no_of_seats ca bng Reservation khng c php thay i gi tr ln hn 5. Trigger ny s thc hin mi ln cp nht bt c ct no trn bng (y l im khc bit vi Column Level).

16

Kt qu thc hin trigger trn khi c hnh ng Update xy ra:

1.6.3. Delete trigger + Chng ta s to Delete trigger khi mun c tc ng ln thao tc Delete d liu cho bng. + Cch thc hin ca Delete trigger: - Xo dng d liu t trigger table. - Thm nhng dng b xo vo Deleted table. - Kim tra nhng dng d liu trong Deleted table thc hin cc cu lnh ca trigger. V d:

17

Kt qu:

1.7. Cc cu lnh khng th s dng trong triggers + CREATE Database + ALTER Database + DROP Database + LOAD Database + RECONFIGURE + RESTORE LOG + DISK INIT + DISK RESIZE + LOAD LOG 18

+ RESTORE Database. 1. 8. Triggers dy chuyn - Cascadeing Trigges Cascading triggers thc hin hiu qu i vi cc rng buc ton vn tham chiu. Cascading triggers sa d liu cc bng lin quan khi c s thay i d liu xy ra trn mt bng. Triggers khng th thc hin cp nht v xo "cascade" nu n lm nh hng n rng buc kho chnh v kho ngoi. Triggers khng thc hin sau khi kim tra rng buc, nu c mt rng buc b vi phm th trigger s khng thc hin. 1.9. Trigger lng nhau - Nested Triggers Thc hin trigger lng nhau khi thc hin trigger ny cn kt qu t mt trigg khc. Triggers c th lng nhau ti a 32 cp. c th s dng c triggers lng nhau ta phi thit t li th tc h thng sp_configure nh sau: sp_configure 'nested trigger',1 Ngc li, lm mt tc dng ca triggers lng nhau: sp_configure 'nested trigger',0 1.10. INSTEAD OF Triggers Trong c phin bn trc, chng ta khng th thc hin c pht biu INSERT, UPDATE, DELETE trn d liu ca Views. SQL Server khc phc nhc im ny, mun thao tc vi d liu trn View, ta phi to trigger cho View . V th, INSTEAD OF trigger cha m lnh thay th cho nhng cu lnh thch hin d liu nguyn thu (INSERT, UPDATE, DELETE) Xem xt v d sau y, chng ta nhing thy View sau y c iu kin kt ni, ci m khng h tr thao tc xo d liu. INSTEAD OF trigger cung cp gii php cho vn ny. 19

Cu lnh to View:

Ta c gng thc hin xo d liu trn View ny bng cu lnh:

Kt qu thc hin s bo li: View or function 'service_view' is not update because the modification affects multiple base tables. V service_view c xc nh trn 2 bng nn chng ta mun xo d liu phi s dng INSTEAD OF trigger. nh ngha nh sau:

Sau khi c trigger ny, cu lnh DELETE c nh ngha y s thay th cho cu lnh DELETE d liu nguyn thu v ta d dng thc hin c cu lnh DELETE trn. Lc ny, d liu cng c xo tng ng trn 2 bng Airline_Service v Service.

20

CHNG 2. THC HNH TRIGGER


C s d liu Flight_Information 1. Bng Airlines_Master: Chi tit ca cc Airlines

2. Bng Category_master: Danh mc cc Airlines

3. Bng Class_Master: Cc mc (hng v) airline cung cp

4. Bng City_Master: Cc thnh ph i v n

21

5. Bng Day_Master: Cc ngy c th phc v

6. Bng Meal: Cc thc n c th la chn

7. Bng Service: Cc dch v c cung cp

8. Bng Status_Master: Tnh trng ca v my bay

22

9. Bng Airline_Service: Cc dch v c cung cp trn mi hng

10. Airline_meal: Cc thc n c phc v trn mi hng

11. Bng Flight: Cc chuyn bay ca hng

23

12. Bng Flight_days: Ngy mi chuyn bay c th phc v

13. Bng Flight_details: Chi tit ca mi chuyn bay

14. Bng Passenger: Chi tit v khch hng

24

15. Bng Reservation: Chi tit v vic t v my bay.

2.1. To INSERT trigger. INSERT trigger m bo d liu nhp vo bng c ng n. Xem xt v d to INSERT trigger m bo khng c v no c t vo mt ngy trong qu kh. Cc bc thc hin: 1. M QA, chn c s d liu FI 2. Thc hin on lnh sau trong QA.

25

3. Sau , hy th thc hin thm mt vi bn ghi c journey_date < ngy hin ti ca h thng. 2.2. To DELETE trigger DELETE trigger ngn cn vic xo i nhng d liu qun trng trong bng. Xem xt v d sau: To trigger trnh xo 2 bn ghi trong bng Pasenger ng thi. 1. Trong QA thc hin nh sau:

2. Thc hin cu lnh xo nhiu hn 2 bn ghi t bng Passenger, gi s nh sau: Kt qu:

26

2.3. To UPDATE trigger. 2.3.1. To Table Level UPDATE trigger. Trigger UPDATE s c thc hin bt c khi no d liu trong bng c cp nht. Xem xt v d: To UPDATE trigger m bo rng rng ct No_of_seats trong bng Reservation khng c cp nht gi tr ln hn 5 v journey_date khng nh hn ngy hin ti. 1. Thc hin nh sau trong QA

2. Thc hin truy vn say kim tra trigger:

Kt qu:

27

2.3.2. To Column Level UPDATE trigger Loi Trigger c thc hin khi d liu trong ct no c cp nht. 1. Thc hin nh sau trong QA:

2. By gi chng ta s th cp nht ct Fare.

2.4. To Trigger c la chn Encryption Encryption (m ho) l phng php gi b mt cho Trigger. Ni dung ca Trigger sau khi c m ho s khng c c. 1. Thc hin cu lnh ALTER TRIGGER sa insert_trigg: 28

2. Thc hin cu lnh sau:

2.5. Hin th danh sch cc Trigger trong Database S dng th tc h thng sp_helptrigger hin th danh sch cc trigger trong c s d liu hin ti. Kt qu:

29

2.6. S dng Triggers to rng buc tham chiu (Enforce Referential Intergrity) V d: To Trigger kim tra d liu nhp vo ct Meal Pref ca bng Passenger phi l d liu tn ti trong ct Meal codes ca bng Meal. 1. Thc hin nh sau trong QA:

2.7. Cascade Delete s dng Nested trigger. Trong Nested trigger, mt trigger c th c thc hin lng trong trigger khc. Chng ta c th lng ti a 32 mc. Nested trigger cho php cascade update c cascade delete. Thc hin cu lnh kch hot Nested trigger: sp_configure 'nested trigger', 1 Ngc li: sp_configure 'nested trigger', 0

30

To Cascade delete trigger thc hin cng vic sau: Nu xo mt chuyn bay trong bng Flight, th tt c c thng tin lin quan trong bng Flight_Details s b xo. 1. Thc hin nh sau trong QA:

2. To Delete Trigger khc trn bng Flight. Trigger ny s thc hin khi trigger Casc_del thc hin.

3. Thc hin cu lnh sau:

31

2.8. To INSTEAD OF Trigger Chng ta c th thc hin INSTEAD OF trigger trn bng, n thay th cho cu lnh INSERT, UPDATE, DELETE nguyn thu. 1. Thc hin nh sau bng QA:

2. Thc hin cu lnh sau:

32

Kt qu:

33

KT LUN

34

MC LC
1.1. Gii thiu v nh ngha...............................................................................................................................2 1.2. S dng trigger khi no ?.............................................................................................................................4 1.3. c im ca Trigger..................................................................................................................................5 1.4. To trigger....................................................................................................................................................7 1.4.1. S dng tin ch Enterprise Manager...................................................................................................7 1.4.2. S dng lnh T_SQL...........................................................................................................................9 1.6. Cc kiu trigger?........................................................................................................................................14 1.6.1 Insert trigger........................................................................................................................................14 1.6.2. Update trigger....................................................................................................................................15 1.6.3. Delete trigger......................................................................................................................................17 1.7. Cc cu lnh khng th s dng trong triggers.........................................................................................18 1. 8. Triggers dy chuyn - Cascadeing Trigges...............................................................................................19 1.9. Trigger lng nhau - Nested Triggers..........................................................................................................19 1.10. INSTEAD OF Triggers.............................................................................................................................19 CHNG 2. THC HNH TRIGGER.............................................................................................................21 C s d liu Flight_Information.....................................................................................................................21 2.1. To INSERT trigger...................................................................................................................................25 2.2. To DELETE trigger..................................................................................................................................26 2.3. To UPDATE trigger.................................................................................................................................27 2.3.1. To Table Level UPDATE trigger.....................................................................................................27 2.3.2. To Column Level UPDATE trigger.................................................................................................28 2.4. To Trigger c la chn Encryption..........................................................................................................28 2.5. Hin th danh sch cc Trigger trong Database........................................................................................29 2.6. S dng Triggers to rng buc tham chiu (Enforce Referential Intergrity)......................................30 2.7. Cascade Delete s dng Nested trigger.....................................................................................................30 2.8. To INSTEAD OF Trigger.........................................................................................................................32 KT LUN........................................................................................................................................................34 MC LC.........................................................................................................................................................35

35

You might also like