You are on page 1of 59

TH TC LU TR - HM -

TRIGGER
1
BIN CC B

Bin la mt i tng co th cha d liu

D liu co th a vao cac cu lnh SQL dung cuc b

Tn cac bin cuc b phai bt u bng

Tu khoa SET hay SELECT c dung gan gia tri cho


bin cuc b.
2
BIN CC B (TT)

DECLARE @Tn_bin Kiu_!_"i#u $% &&&'

Kiu d liu text, ntext hoc image khng c chp nhn


khi khai bao bin

Vi d: khai bo cc bin lu tr gi tr tng s lng


t hng, h tn nh cung c!, ng" #ut hng$ %& '(ng
l)nh *+,-./+ nh sau0
DECLARE Tongsldat INT, Hotenncc CHAR(50)
DECLARE Ngayxh DATETIME
(
BIN CC B (TT) GN GI TR CHO BIN

T) *+,- .ET +-/ .ELECT 0123 4n5 0 56n 5i6 789 3+:
bin&

C; <+6<= SET tn bin cuc b~ gia tri~


Hoc la:
SELECT Tn bin cuc b~ gia tri~

C+; >= ?+@A Bi +:@7 0Cn5 3D- bin 3+E nFA 78:n5 AC7
7+D 7G3 +:H3 AC7 "I 3, 3+J- "#n+ *+-i b6: bin 0,
K
BIN CC B (TT) GN GI TR CHO BIN

12 '(0

t2nh ra s lng t hng cao nht c3a 4t hng 56u *1*


7itachi 8 9a: c; 4< =>t t l 5**?8:$ %& '(ng l)nh %+-+,@
nh sau0
DECLARE MaxSldat INT
SELECT MaxSldatMALM.LDATN
FROM CTDONDH
WHERE MAVTUDD01`
O
BIN CC B (TT) XEM GI TR HIN HNH CA
BIN

PRINT Tnbin , Biuthcchui

t2nh Ang thBi gi tr s lng t hng th! nht =


cao nht, hin th kt CuD ra 4n hEnh$ @a s& '(ng l)nh
%+-+,@ = F/GH@ 0

DECLARE MinSldat INT, MaxSldat INT


SELECTMinSldatMIN(SLDAT),
MaXSldatMAX(SLDAT)
FROM CTDONDH
PRINT "S lng thp nht la : "
PRINT MinSldat
PRINT "S lng cao nht la : " P
CQRSERT(VARCHAR(10), MaxSldat)
T
TH TC LU TR

Tp hp bin dich cc cu lnh T-SQL c lu tr voi mt


tn xc inh

Su dung thuc hin cc nhim vu quan tri, hoc p dung


cc lut giao dich phc tap
C hai loai thu tuc lu tr:

Thu tuc lu tr h thng cp n phong php quan tri d


liu v cp nht thng tin vo cc bang (thong bt u bng
sp).

Thu tuc lu tr do ngoi dng inh nghia.


U
TH TC LU TR - LI CH

Tng tc thuc hin:

Thuc thi tai server, bin dich mt ln

Tc truy nhp d liu nhanh hon:

SQl khng phai lua chon cch tt nht xu ly cc lnh SQL v


truy sut csdl mi khi chng c bin dich

Modular programming:

Mt thu tuc c th phn thnh cc thu tuc nho hon, cc thu tuc
ny c th c dng chung gia cc thu tuc khc-~giam thoi
gian thit k v thuc thi cc thu tuc ng thoi cung d quan ly v
g ri.

Su nht qun.

Cai thin su bao mt:

Nng cao an ton bao mt. C th chi ra quyn thuc thi cho cc
thu tuc v vy n thuc hin ng tc vu ngoi dng.
V
!NH NGH"A TH TC LU TR B#NG
EM
W
!NH NGH"A TH TC LU TR B#NG EM
(TT)
Tn thu tuc
Ni dung thu tuc
(thn thu tuc)
1X
T$O TH TC LU TR B#NG T-%&L

Tao thu tuc lu tr trong csdl hin thoi bng C php:


CREATE ?RQC$EDURE' Y7n 7+D 7G3Z
$MYD.3+ 7+-A [\ZN '
$]ITH ECQM?ILE^ ERCR_?TIQR^ RECQM?ILE%
ERCR_?TIQR'
A.
$DECLARE Ybin 3G3 bCZ' YC3 3`u "#n+ 3D- 7+D 7G3Z

Cc thu tuc lu tr c quyn truy cp toi tt ca cc i


tng khi thu tuc c goi.

2100 tham s c th c su dung trong mt thu tuc lu tr.


Tham s bt u boi , cn chi ra kiu dliu cua tham s

C th tao lp nhiu bin cuc b trong thu tuc

Dung lng ti a cua thu tuc lu tr l 128 MB.


11
T$O TH TC LU TR B#NG T-%&L (TT)

Vi du: Cho CSDL quan ly im thi nh sau:


12
T$O TH TC LU TR B#NG T-%&L (TT)

Gia su ta cn thuc hin mt chui cc thao tc trn co so


d liu

1. B sung thm mn hoc cI sJ ' li)u c m CST??K v s


on vi hoc trnh l K vo bang MONHOC

2. Ln danh sch nhp im thi mn cI sJ ' li)u cho cc sinh


vin hoc lop c m ,*@??L (b sung thm vo bang DIEMTHI
cc ban ghi voi ct MAMONHOC nhn gi tri ,%@??K, ct
MASV nhn gi tri ln lt l m cc sinh vin hoc lop c m
,*@??L v cc ct im l NULL).
1(
T$O TH TC LU TR B#NG T-%&L (TT)

Theo cach thng thong ta s vit 2 lnh nh sau:


INSERT INTO monhoc
VALUES(CST??K`, NCo so d liu`,5)

INSERT INTO diemthi(mamh,masv)


SELECT CST??KM, masv
FROM sinhvien
WHERE malop ,*@??L`

Lu y: o y ban co cu phap cu lnh chen d liu vao mt bang


co tn banga voi d liu ly tu bang co tn bangb khac nh sau:
IR.ERT IRTQ b-n5- M3:71% 3:72N
.ELECT 3:71% 3:72 aRQM b-n5b
1K
!'( )* +,
+-. /012 3,
1/4 56781
.9. :/; 1
5/< 6= )>-.
T$O TH TC LU TR B#NG T-%&L (TT)

Thay vi phai vit 2 cu lnh nh trn, ta co th inh nghia


mt thu tuc voi cac tham s sau mamh, tenmh,
sodvht, malop nhp d liu cho mt mn hoc bt ky
va mt lop bt ky do ngoi dung nhp vao khi su dung thu
tuc.
1O
T$O TH TC LU TR B#NG T-%&L (TT)
CREATE PROC spLenDanhSachDiem(
mamh NVARCHAR(10),
tenmh NVARCHAR(50),
sodvht SMALLINT,
malop CHAR(4)
AS
BEGIN
INSERT INTO monhoc
VALUES(mamh,tenmh,sodvht)
INSERT INTO diemthi(mamh,masv)
SELECT mamh,masv
FROM sinhvien
WHERE malopmalop
END

Khi thu tuc trn c tao ra, thuc hin c hai yu cu trn qua loi
goi thu tuc:

[<_LbnD-n+.-3+DibA cC.TXXOd%dCe [f ! "i#ud%O%cLXX2d


1T
TH?C THI CC TH TC NG@I ABNG

Loi goi thu tuc c dang:


Y7n_7+D_7G3Z $Y-n+_[3+_33_0\i_[\Z'

S lng cc i s v th tu cua chng phai ph hp voi s


lng v th tu cua cc tham s hnh thc.

Nu loi goi thu tuc c thuc hin bn trong mt thu tuc khc,
bn trong mt trigger hay kt hp voi cc cu lnh SQL khc, ta
su dung c php nh sau:
ELEC$UTE' Y7n_7+D_7G3Z $Y-n+_[3+_33_0\i_[\Z'

vdu:

ELECUTE [<_LbnD-n+.-3+DibA cC.TXXOd%dCe [f ! "i#ud%O%cLXX2d

Th tu cua cc i s c truyn cho thu tuc c th khng cn


phai tun theo th tu cua cc tham s nh khi inh nghia thu tuc
nu tt ca cc i s c vit doi dang:
@Y7n_7+-A_[\Z g Y5i_789Z

1U
CA %D ANG BIN TRONG TH TCE
CREATE PROC spVidu(malop1 CHAR(4),malop2
CHAR(4))
AS
DECLARE tenlop1 NVARCHAR(30)
DECLARE namnhaphoc1 INT
DECLARE tenlop2 NVARCHAR(30)
DECLARE namnhaphoc2 INT
SELECT tenlop1tenlop,namnhaphoc1namnhaphoc
FROM lop WHERE malopmalop1
SELECT tenlop2tenlop, namnhaphoc2namnhaphoc
FROM lop WHERE malopmalop2
PRINT tenlop1' nhap hoc nam 'str(namnhaphoc1)
print tenlop2' nhap hoc nam 'str(namnhaphoc2)
IF namnhaphoc1namnhaphoc2
PRINT 'Hai lop nhp hoc cung nm'
ELSE
PRINT 'Hai lop nhp hoc khac nm'
1V
GI TR TRF CG CA THAM %H TRONG TH
TC

Trong hp cn gi lai gia tri cua i s sau khi kt thuc thu tuc,
khai bao tham s cua thu tuc theo cu phap:
tnthams kiudliu OUTPUT

Hoc:
tnthams kiudliu OUT

Trong loi goi thu tuc, sau i s c truyn cho thu tuc, cung
phai chi inh thm tu khoa OUTPUT (hoc OUT)
CREATE PROCEDURE spConghaiso(
a INT,
b INT,
c INT OUTPUT)
AS
SELECT cab
1W
GI TR TRF CG CA THAM %H TRONG TH
TC (TT)

Thuc hin loi goi thu tuc trong mt tp cac cu lnh nh


sau:
DECLARE tong INT
SELECT tong0
EXECUTE spConghaiso 100,200,tong OUTPUT
SELECT tong

~ cu lnh SELECT tong s cho kt qua la: 300


2X
TH TC LU TR - THAM %H GI TR MIC
!NH

Tham s voi gia tri mc inh c khai bao theo cu phap


nh sau:
@Y7n_7+-A_[\Z Y*"Z g Y5i6_789_AH3_09n+Z
21
TH TC LU TR - THAM %H GI TR MIC
!NH
CREATE PROC spTestDeault(
AS
BEGIN
tenlop NVARCHAR(30)NULL,
noisinh NVARCHAR(100)'Hu')
IF tenlop IS NULL
SELECT hodem,ten
FROM sinhvien INNER OIN lop
ON sinhvien.maloplop.malop
WHERE noisinhnoisinh
ELSE
SELECT hodem,ten
FROM sinhvien INNER OIN lop
ON sinhvien.maloplop.malop
WHERE noisinhnoisinh AND
tenloptenlop
END
22
TH TC LU TR - THAM %H GI TR MIC !NH
(TT)

Cho bit ho tn cua cac sinh vin sinh tai 7u:

sptestdeault

Cho bit ho tn cua cac sinh vin lop @in NLO sinh tai 7u:

sptestdeault tenlop'Tin K24

Cho bit ho tn cua cac sinh vin sinh tai Hgh) .n:

sptestDeault noisinhN'Ngh An

Cho bit ho tn cua cac sinh vin lop @in NLP sinh tai a
Nng:

sptestdeault tenlop'Tin K2',noisinh'a Nng'


2(
TH TC LU TR - BIJN ACH L$I TH TC

Cc thu tuc lu tr c bin dich lai phan nh su thay


i toi cc chi s

C ba cch bin dich lai cc thu tuc:

Su dung thu tuc h thng sprecompile

Chi r WITH RECOMPILE voi lnh CREATE PROCEDURE

Chi r WITH RECOMPILE voi lnh EXECUTE


2K
TH TC LU TR - THAK !LI TH TC LU TR

Cu lnh ALTER PROCEDURE c su dung sua mt


thu tuc lu tr

C php ging nh lnh CREATE PROCEDURE

Su thay i ny vn gi lai cc quyn ngoi dng

Cp:

ALTER PROCEDURE tnQth3Qt(c ('anhQschQtha4Qs)


WITH RECOMPILE,ENCRPTION,
RECOMPILE%ENCRPTION AS
R,cQcSuQl)nhQ,3aQth3Qt(cT
2O
TH TC LU TR - XMA TH TC

Su dung cu lnh DROP PROCEDURE voi cu phap nh


sau:

DRQ? ?RQCEDURE Y7n_7+D_7G3 Z


2T
TH TC LU TR - TLNG NT

Mt thu tuc lu tr l mt nhm cc cu lnh SQL c


bin dich lai.

Ngoi pht trin CSDL hoc ngoi quan tri h thng vit
thu tuc chay cc nhim vu quan tri thng thong, hoc
ng dung cc lut giao dich phc tap. Thu tuc lu tr
cha cc thao tc hoc cc cu lnh truy vn d liu.

Cc thu tuc lu tr tng tc thuc thi cua truy vn, h tr


truy cp d liu nhanh, h tr vic lp trnh theo m un,
duy tr tnh nht qun, v tng tnh bao mt.
2U
TH TC LU TR - TLNG NT (TT)

C ba cch bin dich lai cc thu tuc lu tr:

Su dung thu tuc h thng sprecompile

Chi r WITH RECOMPILE voi lnh CREATE PROCEDURE

Chi r WITH RECOMPILE voi ln EXECUTE

Cu lnh ALTER PROCEDURE c su dung sua cha


mt thu tuc lu tr.
2V
HM

Ham la i tng co so d liu tong tu nh thu tuc.

im khac bit gia ham va thu tuc:

Ham tra v mt gia tri thng qua tn ham cn thu tuc thi khng.

Co th su dung ham nh la mt thanh phn cua mt biu


thc (chng han, trong dsach chon cua lnh SELECT).

Ham do HQT CSDL cung cp sn

Ngoi su dung co th inh nghia cac ham nhm phuc vu


cho muc ich ring cua minh
2W
HM

Ham gm 3 loai:

Cac ham thao tac tp hp

Ham thao tac ban ghi

Ham v hong
(X
HM

Cac ham thao tac voi tp ban ghi co th c dung thay


cho tn cac bang trong SQL.

Cac ham tp hp tinh toan cho ra kt qua la mt gia tri


on nht (vi du tinh tng hay trung binh).

Cac ham v hong thao tac trn mt gia tri va tra v mt


gia tri. Cac ham nay co th c dung trong cac biu
thc.
(1
HM !NH NGH"A HM

CREATE FUNCTION tnham (danhsachthams)


RETURNS (kiutravcuaham)
AS
BEGIN
cacculnhcuaham
END
(2
HM !NH NGH"A HM (TT)
CREATE FUNCTION thu(ngay DATETIME) RETURNS
NVARCHAR(10)
AS
BEGIN
DECLARE st NVARCHAR(10)
SELECT stCASE DATEPART(DW,ngay)
WHEN 1 THEN 'Chu nht'
WHEN 2 THEN 'Th hai'
WHEN 3 THEN 'Th ba'
WHEN 4 THEN 'Th t'
WHEN 5 THEN 'Th nm'
WHEN THEN 'Th sau'
ELSE 'Th bay' END
RETURN (st) @r trD =U c3a h4
END
((
HM %D ANG HM

SELECT masv, hodem, ten,


dbo.thu(ngaysinh), ngaysinh
FROM sinhvien
WHERE malop=C24102
(K
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG

CREATE FUNCTION tn_hm


([danh_sch_tham_s]) RETURNS TABLE
AS
RETURN (cu_lnh_select)

Qui tc:

Kiu tra v cua ham c chi inh boi mnh RETURNS


TABLE.

Trong phn thn cua ham chi co duy nht mt cu lnh RETURN
xac inh gia tri tra v cua ham thng qua duy nht mt cu lnh
SELECT (khng su dung bt ky cu lnh nao khac trong phn
thn cua ham).
(O
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT)

Vd: inh nghia ham xemsv


CREATE FUNCTION uncXemSV(khoa SMALLINT)
RETURNS TABLE
AS
RETURN(SELECT masv,hodem,ten,ngaysinh
FROM sinhvien INNER OIN lop
ON sinhvien.maloplop.malop
WHERE khoakhoa)
(T
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT)

Khi cn su dung nhiu cu lnh trong phn thn ham, su


dung cu phap sau:

CREATE FUNCTION tnQh4T ('anhQschQtha4QsT)


RETURNS binQbDngT TABLE nhQngh9aQbDngT
AS
BEGIN
RccQcSuQl)nhQtrongQthSnQh4T
RETURN
END
(U
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT)

Lu y:

Cu truc bang tra v boi ham c xac inh dua vao


inh nghia cua bang trong mnh RETURNS.

Bin binQbDngT trong mnh RETURNS co


pham vi su dung trong ham va c su dung nh mt
tn bang.

Cu lnh RETURN trong thn ham khng chi inh gia


tri tra v. Gia tri tra v cua ham chinh la cac dng d
liu trong bang co tn la binbDngT c inh
nghia trong mnh RETURNS
(V
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT) C A
CREATE FUNCTION FuncTongsv(khoa SMALLINT) RETURNS
bangthongke TABLE (
makhoa NVARCHAR(5),
tenkhoa NVARCHAR(50),
tongsosv INT
) AS
BEGIN
IF khoa0
INSERT INTO bangthongke
SELECT khoa.makhoa,tenkhoa,COUNT(masv)
FROM (khoa INNER OIN lop
ON khoa.makhoalop.makhoa) INNER OIN sinhvien
ON lop.malopsinhvien.malop
GROUP B khoa.makhoa,tenkhoa
ELSE
(W
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT)
INSERT INTO bangthongke
SELECT khoa.makhoa,tenkhoa,COUNT(masv)
FROM (khoa INNER OIN lop
ON khoa.makhoalop.makhoa)
INNER OIN sinhvien
ON lop.malopsinhvien.malop
WHERE khoakhoa
GROUP B khoa.makhoa,tenkhoa
RETURN Tra kt qua v cho ham
END
KX
HM HM C8I GI TR TRF CG L A LIU NI<U
BFNG (TT)

Cu lnh:
SELECT FROM dbo.uncTongSV(25)

S cho kt qua thng k tng s sinh vin khoa 25 cua mi khoa:

Cn cu lnh:
SELECT FROM dbo.uncTongSV(0)

Cho ta bit tng s sinh vin hin co (tt ca cac khoa) cua mi
khoa
K1
TRIGGER TRIGGER L GOP

Cu truc gn ging nh mt thu tuc ni tai nhng

Khng co tham s u vao va u ra

Phai c lin kt voi mt bang bang ao trong CSDL

Khng th goi ma c thuc hin tu ng. Su dung trong


vic:

Tinh toan, cp nht gia tri tu ng

Kim tra d liu nhp

Khai bao su dung

Kt hp voi cac hanh ng INSERTUPDATEDELETE trn


bang hay bang ao

Khi tao ra, tham gia vao transaction khoi tao boi cu lnh cp
nht d liu tong ng
K2
CC XD LQ BJN TRONG TRIGGER

Kim tra cac rang buc d liu phc tap

Cac rang buc m ta phc tap, khng th dung constraint

Goi hanh ng Rollback Tran huy thao tac cp nht khi vi


pham rang buc

Bao am d liu lun c toan vn

Bao am vic kim thu ng dung khng lam h d liu co sn

Tinh toan, tu ng cp nht gia tri

B sung cac hanh ng cp nht d liu am bao tinh toan


vn d liu

on gian hoa vic xy dung ng dung

Chi inh cac by li d hiu

Tng tinh thn thin cua ng dung

D dang nhn ra cac li khi lp trinh


K(
CC H$N CH TRJN TRIGGER

Khng c tao va tham chiu bang tam

Khng tao hay thay i, xoa cu truc cac i tng sn co


trong CSDL

CREATEALTERDROP

Khng gan, cp quyn cho ngoi dung

GRANDREVOKE
KK
CC LO$I TRIGGER

SQL Server 2000 co hai loai trigger

Trigger thng thong: AFTER (FOR) trigger

Chay sau cac hanh ng kim tra d liu cua cac Rule, Constraint

D liu bi tam thoi thay i trong bang

INSTEAD OF trigger

Chay troc cac hanh ng kim tra d liu

D liu cha h bi thay i

Co th thay th hanh ng cp nht d liu bng cac hanh ng khac


KO
CC BFNG TRUNG GIAN IN%ERTEA C
AELETEA

Inserted

Cha d liu c thm moi trong hanh ng


INSERTUPDATE

Co o ca hai loai trigger

Cu truc bang ging voi bang thuc su c cp nht d liu

Deleted

Cha d liu bi xoa trong hanh ng DELETEUPDATE

Co o ca hai loai trigger

Cu truc bang ging voi bang thuc su c cp nht d liu

Hanh ng update trong SQL Server

Xoa dng d liu cu

Thm vao dng d liu moi voi thng tin cp nht


KT
LM SI#C ShI TRIGGER
KU
T$O M8I TRIGGER

Trigger c th c tao bng cng cu Enterprise Manager,


hoc Query Analyer.

Trong ca hai trong hp, cu lnh CREATE TRIGGER


c su dung tao ra trigger.
CREATE TRIGGER Tn_Trigger ON Tn_bng
{ [ INSTEAD OF ] | [ FOR | AFTER ] }
{ [ INSERT [, UPDATE [,DELETE ] ] ] }
AS
[DECLARE i!n_"#"_b$]
C%"_&'n(
KV
MR TF

Tn bang

Tn bang ma trigger tao moi s lin kt

INSTEAD OF: chi inh y la trigger loai instead o trigger

Mi bang chi co quyn tao mt instead o trigger cho mt hanh


ng cp nht

FOR hoc AFTER

Nu tao trigger thng thong

INSERT, UPDATE, DELETE

Hanh ng cp nht d liu tac ng vao bang kich hoat


trigger.
KW
XMA TRIGGER

Cu phap
DROP TRIGGER Tn_)rigger
OX
%DA NI AUNG TRIGGER

Sua ni dung
ALTER TRIGGER Tn_Trigger ON Tn_bng
FOR INSERT [, UPDATE [,DELETE ]]
AS
[DECLARE i!n_"#"_b$]
C%"_&'n(
O1
TRIGGER LSNG NHAU

Trigger co th lng nhau

Hanh ng cp nht Trigger Cp nht bang khac


Trigger trn bang tong ng

Instead O trigger khng phat sinh lai trn chinh bang ma no lin
kt

Cp nht Instead o Trigger Goi cu lnh cp nht xung bang


Instead o trigger

S cp lng ti a

32 cp

Su dung bin **Ne+)e,Le-e&

Cu hinh cho php trigger lng nhau

E.EC +/_"0n1ig2re 3nested triggers3, [4 | 5]


O2
TRIGGER KIM TRA
RRG iUCC D! LI#U
O(
NHI THJM M8I MTU TIN

Thong dung kim tra

Khoa ngoai, Min gia tri, Lin thuc tinh trong cung mt bang

Lin thuc tinh cua nhiu bang khac nhau

3 loai u tin, chi dung trigger nu mun cung cp cac bao


li cu th bng ting Vit

Nu khai bao cac rang buc nay bng constraint

Cac cu truc lnh thong dung khi kim tra

I Else

I Exists

Raiserror

Rollback Tran
OK
NHI HK BU MTU TIN

Tong tu, kim tra cac rang buc nh trigger INSERT

Nn kim tra rang buc khoa ngoai

Thng thong rang buc nay dn n vic phai cp nht mt s


d liu trn bang khac

Chu y: SQL Server 2000 co thuc tinh CASCADE DELETE


OO
NHI %DA !LI MTU TIN

Tong tu, kim tra cac rang buc nh trigger INSERT

Rang buc khoa ngoai co th su dung CASCADE UPDATE


thuc hin tu ng

Xac inh ct ang c cp nht


I1 U/,6)e7Tn_"$)8
.9 &:
OT
TRIGGER CVW NHVT GI TR T? !NG

Sau khi kim tra rang buc trigger co th

Rollback nu d liu khng hp l

Thuc hin tip cac hanh ng cp nht trn bang khac am


bao toan vn d liu: Cp nht gia tri tu ng

Vd: Insert CTGiaoHang Cp nht bang TONKHO

Cac hanh ng cp nht thong thuc hin

Huy bo d liu do quan h khoa ngoai

Tinh lai cac ct 'tinh toan' trong cac bang lin quan

Vi tri thuc hin

Trong cung trigger kim tra rang buc inh nghia

Sau khi kim tra d liu hp l (thoa mn cac rang buc)


OU
IN%TEAA OX TRIGGER

Bang ao thng thong co th c cp nht nhng co nhiu


gioi han

Group By, Order By, Distinct

Rang buc khoa ngoai

Thiu cac ct NOT NULL trong bang

Trigger Instead o

Xay ra troc khi SQL Server kim tra rang buc

Thay i hanh ng cp nht vao bang ao bng hanh ng thich


hp trn bang gc
OV
C A

Tao bang ao sau


Se&e") D;S0D<, Ng6=D<, >6N(6CC, ?;>6?T2, Ten?T2,
S0L20ng, D0nGi6 Fr0@ CTDOND< CT, DOND< D, ?ATTU
? A(ere CT;S0D< B D;S0D< An, CT;>6?T2 B ?;>6?T2
CREATE TRIGGER )g_-C_CTDOND<_I
INSTEAD OF INSERT ON -C_CTDOND<
AS
VV Hu cha c; In t hng, th4 In t hng =o *WH*7
In+er) In)0 DOND< Se&e") S0D<, Ng6=D<, >6N(6CC
Fr0@ In+er)e, A(ere S0D< N0) In 7Se&e") S0D<
Fr0@ D0nD<8
VV Hu cha c; =>t t, th4 =>t t =o bDng 1.@@X
In+er) In)0 ?ATTU7>6?T2, Ten?T28 Se&e") >6?T2,
Ten?T2 Fr0@ In+er)e, A(ere >6?T2 N0) In 7Se&e")
>6?T2 Fr0@ ?ATTU8
VV @h4 cc chi tit t hng =o ,@*WH*7
In+er) In)0 CTDOND< Se&e") S0D<, >6?T2, S0L20ng,
D0nGi6 Fr0@ In+er)e,
OW

You might also like