You are on page 1of 4

Khoa H Thng Thng Tin, Trng H CNTT Tp.

HCM

C s d liu: Bi Thc Hnh s 6

Bi Thc Hnh s 6
TRNG H CNG NGH THNG TIN TP.HCM Khoa H Thng Thng Tin Chng trnh o to: K s Cng ngh thng tin TM TT BI THC HNH Yu cu l thuyt Sinh vin c trang b kin thc: Rng buc ton vn.. Tn mn hc: C s d liu

I.

Ni dung II. Xy dng c cc cu RBTV bng Trigger

HNG DN TRIGGER: 1. Gii thiu Trigger: - Trigger l mt k thut lp trnh c bit trong SQL, dng thc hin cc loi rng buc ton vn c tnh phc tp, n s c hiu lc khi chng ta thay i d liu trn mt bng d liu c th,nh hoc cc lnh x l lm thay i d liu ca cc lnh: insert, update, delete. Trong trigger c th cha cc lnh truy vn t cc bng khc hoc bao gm nhng lnh truy vn phc tp. - Trigger chy mt cch t ng: chng c kch hot ngay tc th khi c s thay i d liu trn bng d liu. 2. C php: 2.1. Lnh to trigger:

Create Trigger trigger_name on table_name For [insert,update,delete] As Begin Khai bo cc x l End


Lu : trigger sau khi to, chnh sa ni dung cc khai bo x l th ta thay t kha Create bng t kha Alter => sau cho thc thi lai trigger (bi en nhn F5) th ni dung mi c hiu lc 2.2. Lnh xa trigger:

Drop Trigger trigger_name


Lu : trng hp thi ch mun ngng kim tra trigger th ta s dng lnh sau:

Alter table table_name Disable/Enable Trigger trigger_name Hoc Alter table table_name Disable/Enable Trigger ALL

Dng Khai Phong

Trang 1

Khoa H Thng Thng Tin, Trng H CNTT Tp. HCM

C s d liu: Bi Thc Hnh s 6

3. Mt s thao tc lin quan n trigger: 3.1. Thao tc d liu: _Khi ngi dng thc hin thao tc insert d liu vo trong cc quan h th h thng s t ng to ra bng tm vi tn INSERTED c cu trc tng t nh bng d liu m ta mun insert d liu vo. _Khi ngi dng thc hin thao tc delete d liu cc quan h th h thng s t ng to ra bng tm vi tn DELETED c cu trc tng t nh bng d liu m ta mun delete d liu.. _Khi ngi dng thc hin thao tc update d liu cc quan h th h thng s thc hin 2 thao tc sau: To ra bng DELETED cha d liu c To ra bng INSERTED cha d liu mi 3.2. Thao tc lp trnh: - Sinh vin tham kho Book Online v: + Khai bo bin: DECLARE + Xuat thong tin: PRINT,RAISE + Cu trc iu kin: IF) + Cu trc lp: FOR + Con tr: CURSOR + Hy cp nht d liu vo h thng b nh: ROLLBACK TRAN III. BI TP YU CU: Bi 1. Sinh vin lm quen vi vic ci t trigger cho cc RBTV c bn sau: a) Khi thm mt khch hnh th hin th thng bo Khach hang da them thanh cong b) Khi thm 1 ho n th hin th thng bo Ho n ca khch hng <H tn khch hng> c thm thnh cng c) Khi xo mt CTHD th hin th thng bo CTHD ca <SoHD> b xo d) Khi chnh sa tn sn phm ca mt sn phm th cho bit sn phm ca nc no sn xut Hng dn cu a: CREATE TRIGGER trg_Bai1a ON KHACHHANG FOR INSERT AS BEGIN Print Khach hang da them thanh cong END Kim tra li trigger c hot ng? INSERT INTO KHACHHANG(MAKH) VALUES(KH50) Hng dn cu b: CREATE TRIGGER trg_ Kiemtra_NhapHD ON HOADON FOR INSERT AS BEGIN -- Dng t kho khai bo bin DECLARE @MAKH CHAR(4) DECLARE @HOTEN VARCHAR(40) -------------------------------SELECT @MAKH=MAKH FROM INSERTED SELECT @HOTEN=HOTEN FROM KHACHHANG WHERE MAKH=@MAKH PRINT 'Hoa don cua khach hang '+@HOTEN+' da duoc them thanh cong' END

Dng Khai Phong

Trang 2

Khoa H Thng Thng Tin, Trng H CNTT Tp. HCM Bi 2.

C s d liu: Bi Thc Hnh s 6

Sinh vin hon thnh Phn I bi tp Quanlibanhang (t cu 11 n cu 15) Hng dn cu 11: Ngy mua hng (NGHD) ca mt khch hng thnh vin s ln hn hoc

bng ngy khch hng ng k thnh vin (NGDK).


Cc bc gii mt cu RBTV phc tp: - Xc nh bi cnh: KHACHHANG, HOADON - Xc nh bng tm nh hng: + Du + cho bit khi ta thao tc d liu s b vi phm + Du - cho bit khi ta thao tc d liu khng b vi phm

KHACHHANG HOADON

Thm +

Xa -

Sa +(NGDK) +(NGHD)

- Thc hin ci t trigger ti nhng c du + -- Khi thm 1 HD s vi phm RBTV -- Cch 1: CREATE TRIGGER trg01_ins_HOADON ON HOADON FOR INSERT AS BEGIN -- Khai bao bien de chua du lieu tu bang INSERTED ( bang nay co cau truc tuong tu bang HOADON) khi ta them du lieu vao bang HOADON DECLARE @MAKH varchar(4); DECLARE @NGHD smalldatetime; SELECT @MAKH=MAKH,@NGHD=NGHD FROM INSERTED -- Khai bao bien de chua du lieu tu bang KHACHHANG DECLARE @NGDK smalldatetime; SELECT @NGDK=NGDK FROM KHACHHANG WHERE MAKH=@MAKH IF (@NGDK>@NGHD) BEGIN PRINT ERROR: ngay dang ky phai < ngay hoa don ROLLBACK TRAN END ELSE BEGIN PRINT HOA DON DA THEM THANH CONG END END --------------------------------------- Cch 2: CREATE TRIGGER trg01_ins_HOADON ON HOADON FOR INSERT AS BEGIN IF (SELECT COUNT(*) FROM KHACHHANG K,INSERTED I WHERE K.MAKH=I.MAKH AND K.NGDK>I.NGHD)>0 BEGIN PRINT ERROR: ngay dang ky phai < ngay hoa don ROLLBACK TRAN END ELSE

Dng Khai Phong

Trang 3

Khoa H Thng Thng Tin, Trng H CNTT Tp. HCM BEGIN PRINT HOA DON DA THEM THANH CONG END END Ci t tng t cho cc du cg cn li. IV. BI TP M RNG: Bi 3. Sinh vin hon thnh bi tp Quanligiaovu

C s d liu: Bi Thc Hnh s 6

Dng Khai Phong

Trang 4

You might also like