Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 11 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
11
Dung lượng
154,5 KB
Nội dung
-1- SQL Server 2000 : Giao tác (Transaction) – Phần Có hai loại giao tác sử dụng Transaction-SQL : tường minh không tường minh Mặc định lệnh bên lô (patch) chứa câu lệnh có loại giao tác không tường minh 1/- Khái niệm giao tác : Giao tác loại sở liệu quan hệ lớn sử dụng trường hợp mà hành động cập nhật liệu nhiều bảng khác thực đơn vị (unit) Nói cách khác hành động cập nhật liệu đơn vị ghi nhận lại tất hành động bên thực thành công, ngược lại có hành động thực thất bại tất hành động bên đơn vị bị hủy bỏ để đảm bảo tính toàn vẹn liệu bảng Ví dụ : Bạn hình dung khách hàng có lúc loại tài khoản ngân hàng Một tài khoản toán dùng để thực giao dịch thu chi qua lại khách hàng với công ty khác Hai tài khoản tiết kiệm cá nhân khách hàng cho phép khách hàng gởi tiền tiết kiệm để lấy tiền lãi cuối kỳ theo kỳ hạn tháng Giả sử sau thời gian tháng, khách hàng đến ngân hàng để nhận số tiền lãi từ tài khoản tiết kiệm cá nhân Tuy nhiên vị khách hàng muốn phận giao dịch tài khoản thực tự động chuyển số tiền lãi từ tài khoản tiết kiệm sang tài khoản toán Nhận xét thấy hệ thống chương trình ngân hàng phải thực hai hành động cập nhật liệu : lấy số tiền lãi tài khoản tiết kiệm, hai nạp số tiền lãi vào tài khoản toán Chuyện xảy hai hành động thực không thành công mà hành động lại ghi lại nhận vào sở liệu ? Bạn xem xét sau : • Trường hợp : hành động rút số tiền lãi tài khoản tiết kiệm thực thành công hành động nạp số tiền lãi vào tài khỏan toán thực bị thất bại xem khách hàng số tiền lãi tài khoản tiết kiệm (khách hàng tiền) • Trường hợp : hành động rút số tiền lãi tài khỏan tiết kiệm thực thất bại hành động nạp số tiền lãi vào tài khoản toán thực thành công xem khách hàng có thêm số tiền lãi hai tài khoản (ngân hàng tiền) Nhận xét thấy hai trường hợp nêu làm cho hệ thống vi phạm tính toàn vẹn liệu có ảnh hưởng đến uy tín chất lượng ngân hàng Nhưng nhờ vào khái niệm giao tác, bạn quy định hai hành động bao bên -2một đơn vị giao tác nhằm nói chúng ghi nhận lại hai hành động bên thực thành công, ngược lại trường hợp trường hợp mô tả phần có xảy tất hành động bên giao tác bị hủy bỏ (không ghi lại thay đổi liệu) Điều làm cho hệ thống không vi phạm tính toàn vẹn liệu 2/- Giao tác không tường minh : Có hai loại giao tác sử dụng Transaction-SQL : tường minh không tường minh Mặc định lệnh bên lô (patch) chứa câu lệnh có loại giao tác không tường minh, điều có nghĩa có câu lệnh thực không thành công bên lô tất lệnh lại không ghi nhận lại Bạn không nên sử dụng loại giao tác Ví dụ : Bạn cho thực lúc lệnh để cập nhật liệu vào bảng khác lô Tuy nhiên câu lệnh cuối thực bị thất bại vi phạm tính toàn vẹn liệu khóa ngoại (vì đơn đặt hàng nhận hàng nên xóa được) nên lệnh trước lô không ghi nhận lại Để kiểm chứng lại lệnh thêm vật tư mới, sửa đổi tên nhà cung cấp có ghi nhận lại hay không ? Bạn thực lệnh SELECT FROM để xem lại liệu bảng VATTU NHACC -3Nhận xét thấy ví dụ trên, lệnh thêm vật tư mới, sửa đổi tên nhà cung cấp hoàn toàn không ghi nhận lại lô câu lệnh cuối thực bị lỗi (vì vật tư không thêm vào bảng VATTU) SQL Server 2000 : Giao tác (Transaction) – Phần Thông thường giao tác tường minh sử dụng trường hợp cập nhật liệu nhiều bảng khác phải đảm bảo hành động nằm đơn vị xử lý 3/- Giao tác tường minh : Để bắt đầu giao tác tường minh, bạn phải sử dụng câu BEGIN TRAN dòng lệnh đơn vị xử lý Để định cho Microsoft SQL Server kết thúc giao tác ghi nhận lại hành động cập nhật liệu bạn phải sử dụng lệnh COMMIT TRAN ngược lại sử dụng lệnh ROLLBACK TRAN dùng để định cho Microsoft SQL Server kết thúc giao tác mà không ghi nhận lại hành động cập nhật liệu giao tác 3.2/- Lệnh định bắt đầu giao tác : Như phần trình bày lệnh BEGIN TRAN dùng để sử dụng giao tác tường minh Mỗi giao tác ghép lồng giao tác bên đó, bạn định tên cho giao tác lồng nhằm thực dễ dàng việc kết thúc giao tác Biến hệ thống @@TRANCOUNT trả cấp độ lồng hành bên giao tác Cú pháp lệnh định bắt đầu giao tác mô tả bên Cú pháp : Trong : • Tên giao tác : tên giao tác định rõ ràng, nên sử dụng tên giao tác cấp độ lồng giao tác nhiều hai cấp Ví dụ : Sử dụng lệnh BEGIN TRAN để định bắt đầu thực giao tác : thêm vật tư vào bảng VATTU, nhiên kết thúc giao tác bạn không lưu lại vật tư -4- Kết trả : Nhận xét thấy ví dụ này, trước thực giao tác, có 11 vật tư, sau giao tác thêm vào vật tư Tuy nhiên cuối kết thúc giao tác không ghi lại hành động thêm vật tư lệnh ROLLBACK TRAN, tổng số vật tư 11 vật tư kết thúc giao tác 3.2/- Các lệnh định kết thúc giao tác : Theo ví dụ hiểu ý nghĩa lệnh ROLLBACK TRAN dùng để định kết thúc giao tác không ghi nhận lại hành động cập nhật liệu bên giao tác Ngoài cỏ thể sử dụng lệnh COMMIT TRAN dùng để định kết thúc giao tác đồng ý ghi nhận lại hành động cập nhật liệu bên giao tác Cú pháp hai lệnh mô tả bên Cú pháp : -5- Hoặc Trong : • Tên giao tác : tên giao tác định nghĩa trước câu lệnh BEGIN TRAN Ví dụ : Tạo bảng tạm dùng để minh họa việc sử dụng giao tác lồng Kết thúc giao tác lệnh ROLLBACK TRAN không ghi nhận lại hành động cập nhật liệu giao tác trước Điều có nghĩa liệu bảng tạm #TestTran hoàn toàn trống Nhận xét thấy ví dụ tên giao tác sử dụng lệnh ROLLBACK TRAN COMMIT TRAN để giúp cho dễ đọc dễ -6thấy cấp độ hành giao tác lồng nhau, hoàn toàn mối liên hệ tên giao tác lệnh BEGIN TRAN trước SQL Server 2000 : Giao tác (Transaction) – Phần Việc sử dụng đối tượng thủ tục nội để cung cấp liệu, tính toán hình nhập liệu, báo cáo bên ứng dụng làm cho tốc độ xử lý nhánh máy chủ nhanh ứng dụng mô hình khách chủ 3.3/- Phân vùng giao tác : Chúng ta định việc đồng ý ghi nhận không ghi nhận lại hành động cập nhật liệu riêng lẻ bên giao tác cách phân chia thành nhiều vùng nhỏ cho câu lệnh bên giao tác Bằng cách chia nhỏ hành động bên giao tác thành nhiều phần, tương ứng phần nhỏ dễ dàng chủ động đồng ý ghi nhận không ghi nhận lại việc cập nhật liệu Cú pháp lệnh SAVE TRANSACTION cho phép làm điều mô tả Cú pháp : Trong : • Tên vùng : dùng để định vùng chứa lệnh cập nhật liệu tên vùng nên giao tác • Các lệnh : lệnh phân chia theo vùng bên giao tác Ví dụ : Như ví dụ trên, nhiên muốn phân chia lệnh thêm mẫu tin thứ thứ hai vùng thứ nhất, lệnh thêm mẫu tin thứ ba vùng thứ hai giao tác Kết thúc giao tác thực ghi nhận lại lệnh vùng thứ không ghi nhận lại lệnh vùng thứ hai (chỉ có mẫu tin thứ thứ hai ghi lại) -7- 3.4/- Kiểm lỗi bên giao tác : Thông thường làm việc bên giao tác, không định rõ ràng việc kết thúc giao tác lệnh cụ thể COMMIT TRAN ROLLBACK TRAN mà thay vào kiểm tra theo điều kiện quy định trước Nếu điều kiện bị sai bắt buộc không ghi nhận hành động cập nhật liệu giao tác, ngược lại đồng ý ghi nhận hành động Để làm điều này, thông thường sử dụng giá trị biến hệ thống @@ERROR việc kiểm tra để biết kết câu lệnh thực gần thành công hay thất bại Giá trị biến hệ thống @@ERROR trả không câu lệnh gần thực thành công, ngược lại trả giá trị khác không câu lệnh gần thực có lỗi Ví dụ : Thực công việc cấp phát số chứng từ tự động cho bảng DONDH, PNHAP, PXUAT đảm bảo số không bị trùng lắp lúc có nhiều người sử dụng lập chứng từ liên quan Thực bước sau : Đầu tiên xây dựng bảng CAP_SOCTU dùng lưu trữ số chứng từ cấp cho bảng, gồm có cột : tên bảng (tenbang), số chứng từ (soctu), ký tự đầu (kytu) Trong cột tên bảng tham gia làm khóa -8- Kế tiếp thêm dòng liệu vào bảng CAP_SOCTU : Sau cùng, xây dựng thủ tục cấp số chứng từ tự động đảm bảo không trùng lắp Có sử dụng việc kiểm tra lỗi thực lệnh giao tác -9- - 10 - Gọi thực thủ tục để có số chứng từ cho bảng PXUAT Kết trả : Tóm lại, việc sử dụng đối tượng thủ tục nội để cung cấp liệu, tính toán hình nhập liệu, báo cáo bên ứng dụng làm cho tốc độ xử lý nhánh máy chủ nhanh ứng dụng mô hình khách chủ - 11 - [...]...- 11 - ... VATTU) SQL Server 2000 : Giao tác (Transaction) – Ph n Thông thường giao tác tường minh sử dụng trường hợp cập nhật liệu nhiều bảng khác ph i đảm bảo hành động nằm đơn vị xử lý 3/- Giao tác tường... Microsoft SQL Server kết thúc giao tác mà không ghi nhận lại hành động cập nhật liệu giao tác 3.2/- Lệnh định bắt đầu giao tác : Như ph n trình bày lệnh BEGIN TRAN dùng để sử dụng giao tác tường... giúp cho dễ đọc dễ -6thấy cấp độ hành giao tác lồng nhau, hoàn toàn mối liên hệ tên giao tác lệnh BEGIN TRAN trước SQL Server 2000 : Giao tác (Transaction) – Ph n Việc sử dụng đối tượng thủ tục nội