• Các bước xử lý nêu trên nếu đã làm thì phải làm cho hết, ngược lại thì không làm bước nào cả chúng tạo thành một transaction, nói cách khác là một đơn vị công việc nguyên tố... Kh[r]
(1)Trường Đại học Khoa học Tự nhiên Khoa Công nghệ Thông tin
Bộ môn Hệ thống Thông tin
(2)Giao tác (transaction)
• Ví dụ : chuyển khoản 100$ từ tài khoản A sang tài khoản B (50$) Các bước thực gồm :
– Trừ 100$ khỏi tài khoản A
– Nếu số dư A >= 100$ cộng 50$ vào tài khoản B
• Giả sử vừa trừ tiền khỏi tài khoản A cố kỹ thuật xảy ra, bước không thực
– A 100$ B không nhân tiền (!?)
(3)3
Khái niệm
• Giao tác (transaction) tập hợp có thứ tự
thao tác Tập hợp xem đơn vị công việc
– i.e tất thao tác giao tác phải thực thành
công, không thao tác thực
– có thao tác khơng hồn thành tồn giao tác khơng hồn thành
• Giao tác chuyển CSDL từ tình trạng quán
(4)Khái niệm (tt)
• Một số thuật ngữ liên quan đến giao tác
– Begin [transaction/tran] : bắt đầu transaction
– Commit [transaction/tran] : hoàn tất transaction – Rollback [transaction/tran] : quay lui, hủy bỏ toàn
(5)5
Tính chất giao tác: ACID
• Tính ngun tố (Atomic) : tất thao tác giao tác phải
được thực thành công, không thao tác thực
• Tính qn (Consistency) : Chuyển CSDL từ tình trạng
(6)Tính chất giao tác (tt)
• Tính độc lập (Isolation) : xử lý giao tác phải độc lập
với tác động (thấy or thay đổi liệu) giao tác khác thực đồng thời
• Tính bền vững (Durability) : Sau giao tác commit thành
công, tất thay đổi CSDL mà giao tác thực phải ghi nhận chắn (vào ổ cứng)
(7)12
Ghi : Đảm bảo tính Automic
• Để đảm bảo tính chất A giao tác
Người sử dụng phải tường minh điều khiển
rollback giao tác
• Cần kiểm tra lỗi sau thực thao tác
giao tác để xử lý rollback kịp thời
(8)Cài đặt thêm sinh viên
• Dùng Stored:
Create proc… Begin
/*Goi lệnh insert thêm vào SinhVien*/
/* Đọc kiểm tra SiSo lớp */
/* Nếu SiSo >= Max , báo lỗi */
rollback transaction
/*Cập nhật tăng sỉ số*/
/* Nếu có lỗi thực thao tác :*/
rollback transaction
(9)14
Ví dụ - kiểm lỗi @@error
Create proc sp_ThemSV @MaSV int, @MaLop int As
begin transaction
declare @SiSo int select @SiSo = SiSo
from LOP
where MaLop = @MaLop if(@SiSo>=Max)
begin
rollback transaction return
(10)Ví dụ (tt)
Insert into SINH_VIEN(MaSV,MaLop) values(@MaSV,@MaLop)
if(@@error<>0) begin
rollback transaction return