
GIAO TÁC TRONG
H QU N TR C S D LI UỆ Ả Ị Ơ Ở Ữ Ệ
SQL SERVER 2012

Giao tác
(Transaction)
Giao tác đc hi u nh khái ni m ch t p các l nh đc th c ượ ể ư ệ ỉ ậ ệ ượ ự
hi n nh ng có s g n k t v i nhau và đc coi nh là 1 đn v ệ ư ự ắ ế ớ ượ ư ơ ị
ho t đng, chúng ch thành công n u nh t t c thành công và ạ ộ ỉ ế ư ấ ả
th t b i n u có 1 ph n t th t b i.ấạế ầửấạ
Tính ch t c a giao tác ấ ủ
•Tính nguyên t (Atomicty): Thành công n u t t c thành công.ử ế ấ ả
•Tính nh t quán (Consistency): V n đm b o các ràng bu c.ấ ẫ ả ả ộ
•Tính cô l p (Isolation): Th hi n m c đ riêng t c a t ng ậ ể ệ ứ ộ ư ủ ừ
giao tác. (M t giao tác đang thay đi có th bên ngoài th y hay ộ ổ ể ấ
không th y)ấ
•Tính b n v ng (Durability): Khi h th ng có l i, nh ng thành ề ữ ệ ố ỗ ư
công c a giao tác v n đc ghi vào d li u. ủ ẫ ượ ữ ệ

Giao tác
(Transaction)
V n đ đt ra cho vi c dùng giao tác ấ ề ặ ệ
oKhi nào s d ng giao tác ?ử ụ
oS d ng giao tác m c đ cô l p nào là phù h p ?ử ụ ở ứ ộ ậ ợ
oPh m vi nh h ng c a giao tác là đâu ?ạ ả ưở ủ
oKh năng các ngôn ng l p trình k t n i v i h qu n tr ả ữ ậ ế ố ớ ệ ả ị
có s d ng c ch giao tác nh th nào ?ử ụ ơ ế ư ế

Giao tác t ng minhườ
(Explicit)
Giao tác
Begin tran [tên_giao_tác]
lệnh | khối_lệnh
{ Commit tran | Rollback tran }
[tên_giao_tác]
T o đi m l uạ ể ư
save tran tên_điểm_lưu
H y nh ng gì sau đi m l u n u rollbackủ ữ ể ư ế

Giao tác – Đi m l uể ư
(Save point)
begin tran t1
lệnh | khối_lệnh
save tran s1
lệnh | khối_lệnh
rollback tran s1 -- ch a ch m d t t1ư ấ ứ
lệnh | khối_lệnh
commit tran t1
=> Rollback tran s1 ch h y b k t qu t sau l nh ỉ ủ ỏ ế ả ừ ệ save
tran s1 đn ch ế ổ rollback tran s1 và sau đó là ti p t c ế ụ
làm ti p (giao tác t1 v n còn).ế ẫ

