http://vietjack.com/sql/index.jsp Copyright © vietjack.com Transaction SQL Transaction SQL đơn vị công việc thực Database Transaction đơn vị dãy công việc thực theo thứ tự logic hợp lý, thao tác người dùng Database program Một transaction lan truyền nhiều thay đổi tới Database Ví dụ, bạn tạo ghi cập nhật ghi xóa ghi từ bảng, bạn thực transaction bảng Nó quan trọng để điều khiển transaction để bảo đảm toàn vẹn liệu để xử lý Database Error Thực tế, bạn tập hợp nhiều truy vấn SQL vào nhóm thực thi tất truy vấn với phần transaction Property Transaction SQL Transaction có property chuẩn, thường tham chiếu tên lược danh ACID: Atomicity: bảo đảm tất hoạt động bên đơn vị cơng việc hồn thành cách thành cơng; không, transaction bị ngừng điểm thất bại, hoạt động trước trao trả trạng thái trước Consistency: bảo đảm Database thay đổi cách xác trạng thái theo transaction ký thác thành công Isolation: cho transaction khả hoạt động cách độc lập không liên quan đến Durability: bảo đảm kết tác động transaction, mà ký thác, tồn trường hợp hệ thống thất bại Điều khiển transaction SQL Trong SQL, có lệnh sau sử dụng để điều khiển transaction: COMMIT: để lưu thay đổi ROLLBACK: để quay trở lại trạng thái trước có thay đổi http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com SAVEPOINT: tạo điểm (point) bên nhóm transaction để ROLLBACK, tức để quay trở lại điểm trạng thái SET TRANSACTION: đặt tên cho transaction Các lệnh điều khiển transaction sử dụng với lệnh INSERT, UPDATE DELETE Chúng sử dụng tạo xóa bảng, hoạt động ký thác tự động Database Lệnh COMMIT SQL Lệnh COMMIT lệnh điều khiển transaction sử dụng để lưu thay đổi triệu hồi transaction tới Database Lệnh COMMIT lưu giữ tất transaction Database từ lệnh COMMIT ROLLBACK cuối Cú pháp lệnh COMMIT sau: COMMIT; Ví dụ Bảng SINHVIEN có ghi sau: + + -+ -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Hoang | 21 | CNTT | 4000000 | | Viet | 19 | DTVT | 3000000 | | Thanh | 18 | KTDN | | | Nhan | 19 | CK | 4500000 | | Huong | 20 | TCNH | 5000000 | | 4000000 | | | + + -+ -+ -+ -+ Ví dụ sau xóa ghi từ bảng mà có tuoi = 19 sau COMMIT thay đổi vào Database SQL> DELETE FROM SINHVIEN http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com WHERE TUOI = 19; SQL> COMMIT; Trong kết thu được, hai hàng bảng bị xóa lệnh SELECT cho kết sau: + + + -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Hoang | 21 | CNTT | 4000000 | | | Thanh | 18 | KTDN | | | | Huong | 20 | TCNH | 4000000 5000000 | + + + -+ -+ + Lệnh ROLLBACK SQL Lệnh ROLLBACK lệnh điều khiển transaction sử dụng để trao trả transaction trạng thái trước có thay đổi mà chưa lưu tới Database Lệnh ROLLBACK sử dụng để undo transaction từ lệnh COMMIT ROLLBACK cuối thông báo Cú pháp lệnh ROLLBACK sau: ROLLBACK; Ví dụ Bảng SINHVIEN có ghi sau: + + -+ -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Hoang | 21 | CNTT | 4000000 | | Viet | 19 | DTVT | 3000000 | | Thanh | 18 | KTDN | | | Nhan | 19 | CK | 4500000 | | Huong | 20 | TCNH | 5000000 | | 4000000 | | | + + -+ -+ -+ -+ http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com Bây sử dụng lệnh ROLLBACK với lệnh xóa tuoi = 19, mà chưa commit sau: SQL> DELETE FROM SINHVIEN WHERE TUOI = 19; SQL> ROLLBACK; Trong kết thu được, hoạt động Delete không ảnh hưởng tới bảng lệnh SELECT cho kết quả: + + -+ -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Hoang | 21 | CNTT | 4000000 | | Viet | 19 | DTVT | 3000000 | | Thanh | 18 | KTDN | | | Nhan | 19 | CK | 4500000 | | Huong | 20 | TCNH | 5000000 | | 4000000 | | | + + -+ -+ -+ -+ Lệnh SAVEPOINT SQL Một SAVEPOINT điểm (point) transaction bạn lùi transaction điểm cụ thể mà không cần lùi transaction trạng thái đầu trước có thay đổi Cú pháp lệnh SAVEPOINT sau: SAVEPOINT TEN_CUA_SAVEPOINT; Lệnh phục vụ việc tạo SAVEPOINT lệnh điều khiển transaction Lệnh ROLLBACK sử dụng để undo nhóm transaction Cú pháp để lùi SAVEPOINT sau: ROLLBACK TO TEN_CUA_SAVEPOINT; Trong ví dụ sau, bạn muốn xóa ghi khác từ bảng SINHVIEN Bạn muốn tạo SAVEPOINT trước lệnh DELETE, bạn ROLLBACK SAVEPOINT lúc để trả liệu thích hợp trạng thái ban đầu http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com Ví dụ Bảng SINHVIEN có ghi sau: + + -+ -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Hoang | 21 | CNTT | 4000000 | | Viet | 19 | DTVT | 3000000 | | Thanh | 18 | KTDN | | | Nhan | 19 | CK | 4500000 | | Huong | 20 | TCNH | 5000000 | | 4000000 | | | + + -+ -+ -+ -+ Dưới dãy hoạt động: SQL> SAVEPOINT SP1; Savepoint created SQL> DELETE FROM SINHVIEN WHERE ID=1; row deleted SQL> SAVEPOINT SP2; Savepoint created SQL> DELETE FROM SINHVIEN WHERE ID=2; row deleted SQL> SAVEPOINT SP3; Savepoint created SQL> DELETE FROM SINHVIEN WHERE ID=3; row deleted Ở trên, có hoạt động xóa diễn Sau lúc, bạn thay đổi suy nghĩ định ROLLBACK SAVEPOINT mà bạn xác định SP2 Bởi SP2 tạo sau hoạt động xóa đầu tiên, hai hoạt động xóa cuối undo SQL> ROLLBACK TO SP2; Rollback complete Chú ý rằng, có hoạt động xóa diễn bạn rollback SP2 http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/sql/index.jsp Copyright © vietjack.com SQL> SELECT * FROM SINHVIEN; + + -+ -+ -+ + | ID | TEN | TUOI| KHOAHOC | HOCPHI | + + -+ -+ -+ -+ | | Viet | 19 | DTVT | 3000000 | | Thanh | 18 | KTDN | | | Nhan | 19 | CK | 4500000 | | Huong | 20 | TCNH | 5000000 | 4000000 | | | + + -+ -+ -+ -+ rows selected Lệnh RELEASE SAVEPOINT SQL Lệnh RELEASE SAVEPOINT sử dụng để xóa SAVEPOINT mà bạn tạo Cú pháp lệnh RELEASE SAVEPOINT SQL sau: RELEASE SAVEPOINT TEN_CUA_SAVEPOINT; Một SAVEPOINT bị xóa, bạn khơng thể sử dụng lệnh ROLLBACK để lùi transaction SAVEPOINT Lệnh SET TRANSACTION SQL Lệnh SET TRANSACTION sử dụng để khởi tạo Database Transaction Lệnh sử dụng để xác định đặc trưng cho transaction Ví dụ, bạn xác định transaction read only read write Cú pháp lệnh SET TRANSACTION SQL sau: SET TRANSACTION [ READ WRITE | READ ONLY ]; http://vietjack.com/ Trang chia sẻ học online miễn phí Page ... để lùi transaction SAVEPOINT Lệnh SET TRANSACTION SQL Lệnh SET TRANSACTION sử dụng để khởi tạo Database Transaction Lệnh sử dụng để xác định đặc trưng cho transaction Ví dụ, bạn xác định transaction. .. hoạt động: SQL> SAVEPOINT SP1; Savepoint created SQL> DELETE FROM SINHVIEN WHERE ID=1; row deleted SQL> SAVEPOINT SP2; Savepoint created SQL> DELETE FROM SINHVIEN WHERE ID=2; row deleted SQL> SAVEPOINT... Lệnh ROLLBACK SQL Lệnh ROLLBACK lệnh điều khiển transaction sử dụng để trao trả transaction trạng thái trước có thay đổi mà chưa lưu tới Database Lệnh ROLLBACK sử dụng để undo transaction từ