Nội dung• Khái niệm• Tính chất• Quản lý Transaction trong SQL Server• Các mức kiểm soátMICROSOFT SQL SERVERFACULTY OF INFORMATION TECHNOLOGYKhái niệm: Transaction(giao dịch)• Một hoặc một nhóm các tác vụ thực thi đồng thời. VD:INSERT, UPDATE, DELETE, SELECT…• Transaction đảm bảo tính toàn vẹn dữ liệu: ngăn chặn tìnhhuống cập nhật dữ liệu nửa chừng chỉ cập nhật mộtphần.• VD: chuyển 1000 từ TK A sang TKB.?MICROSOFT SQL SERVERFACULTY OF INFORMATION TECHNOLOGYTính chất• Atomicity• Consistency• Isolation• Durability
MICROSOFT SQL SERVER TRANSACTION GV: Nguyễn Thị Cẩm Hương FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Nội dung • Khái niệm • Tính chất • Quản lý Transaction SQL Server • Các mức kiểm soát FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Khái niệm: Transaction(giao dịch) • Một nhóm tác vụ thực thi đồng thời VD: INSERT, UPDATE, DELETE, SELECT… • Transaction đảm bảo tính toàn vẹn liệu: ngăn chặn tình cập nhật liệu nửa chừng cập nhật phần • VD: chuyển 1000$ từ TK A sang TKB.? FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Tính chất • Atomicity • Consistency • Isolation • Durability FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER KIỂM SOÁT TRANSACTION • BEGIN a transaction • COMMIT a transaction • ROLLBACK a transaction • SAVE a transaction FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Transaction Types • Explicit transactions • Autocommit transactions • Implicit transactions FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Explicit transactions BEGIN TRAN[SACTION] T-SQL statements @@TRANCOUNT = IF ROLL BACK ELSE COMMIT @@TRANCOUNT = FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER AUTOCOMMIT TRANSACTIONS • Autocommit mode: mode quản lý transaction mặc định SQL Server • Một statement committed thực thành công hay trả ngược lại ban đầu (roll back) gặp lỗi • Lệnh BEGIN TRANSACTION vượt quyền autocommit mặc định FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Ví dụ BEGIN TRANSACTION trnUpdatePosition UPDATE Employee SET cCurrentPosition = '0001' WHERE cEmployeeCode= '000002' UPDATE Position SET iCurrentStrength = iCurrentStrength + WHERE cPositionCode = '0001' COMMIT TRANSACTION trnUpdatePosition FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER LỆNH ROLLBACK ROLLBACK [TRAN[SACTION] [transaction_name |savepoint_name ] FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER LỆNH SAVE TRANSACTION • Cú pháp SAVE TRAN[SACTION] {savepoint_name } FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Thực thi transaction với điểm dừng BEGIN TRANSACTION UPDATE Employee SET cCurrentPosition = '0015' WHERE cEmployeeCode = '000002' UPDATE Position SET iCurrentStrength = iCurrentStrength + WHERE cPositionCode = '0015' SAVE TRANSACTION trnTransaction1 UPDATE Requisition SET siNoOfVacancy=siNoOfVacancy - 10 WHERE cRequisitionCode='000004' UPDATE Position SET iCurrentStrength=iCurrentStrength+10 WHERE cPositionCode='0015‘ FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER THỰC THI MỘT TRANSACTION VỚI ĐIỂM DỪNG IF (SELECT iBudgetedStrength-iCurrentStrength FROM Position WHERE cPositionCode = '0015') = CONSTRAINT 7.50); GO Msg 547, Level 16, State 1, Line ALTER TABLE statement conflicted with COLUMN CHECK constraint ‘ckWage’ The conflict occurred in database ‘AdventureWorks’, table ‘EmployeePayHistory’, column ‘Rate’ FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER LOST UPDATES FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER CÁC LOẠI KHOÁ • SQL Server tạo loại khoá sau: • • • • • • RID (row identifier): khoá hàng bảng Key: khoá hàng bảng index Table: khoá tất hàng mục bảng Database: dùng lưu trữ database Page: khoá trang liệu hay trang mục Extent: khoá nhóm trang lúc phân phối không gian lưu trữ FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER CÁC KIỂU LOCK • Shared Locks • Update Locks • Exclusive Locks • Intent Locks • Schema Locks FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER DEADLOCK FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER THIẾT LẬP CÁC MỨC ISOLATION • Isolation level: thuộc tính transaction • Isolation level: quy định mức độ cô lập liệu mà transaction truy cập vào liệu cập nhật transaction khác • • • • • Read Uncommitted Read Commited Repeatable Read Serializable Snapshot FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Mức Isolation Dirty read Nonrepeatable read Phantom read Read Uncommitted Yes Yes Yes Read Committed No Yes Yes Repeatable read No No Yes Serializable No No No Snapshot No No No FACULTY OF INFORMATION TECHNOLOGY [...]...MICROSOFT SQL SERVER Ví dụ BEGIN TRANSACTION USE Pubs UPDATE Titles SET Royalty = Royalty + 20 WHERE type LIKE 'busin%' IF (SELECT MAX(Royalty) FROM Titles WHERE Type LIKE 'busin%') >$25 BEGIN ROLLBACK TRANSACTION PRINT 'Transaction Rolled back' END ELSE BEGIN COMMIT TRANSACTION PRINT 'Transaction Committed' END FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER LỆNH SAVE TRANSACTION • Cú... INFORMATION TECHNOLOGY MICROSOFT SQL SERVER THỰC THI MỘT TRANSACTION VỚI ĐIỂM DỪNG IF (SELECT iBudgetedStrength-iCurrentStrength FROM Position WHERE cPositionCode = '0015') ... MICROSOFT SQL SERVER KIỂM SOÁT TRANSACTION • BEGIN a transaction • COMMIT a transaction • ROLLBACK a transaction • SAVE a transaction FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Transaction. ..MICROSOFT SQL SERVER Nội dung • Khái niệm • Tính chất • Quản lý Transaction SQL Server • Các mức kiểm soát FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Khái niệm: Transaction( giao... Types • Explicit transactions • Autocommit transactions • Implicit transactions FACULTY OF INFORMATION TECHNOLOGY MICROSOFT SQL SERVER Explicit transactions BEGIN TRAN[SACTION] T -SQL statements