Câu lệnh ROLLBACK có thể được sử dụng để kết thúc một đơn vị khôi phục và sao lưu tất cả các thay đổi cơ sở dữ liệu quan hệ được thực hiện bởi đơn vị khôi phục đó. Nếu cơ sở dữ liệu quan hệ là tài nguyên duy nhất có thể khôi phục được sử dụng bởi quy trình ứng dụng, ROLLBACK cũng kết thúc đơn vị công việc. ROLLBACK cũng có thể được sử dụng để chỉ sao lưu các thay đổi được thực hiện sau khi điểm lưu trữ được đặt trong đơn vị khôi phục mà không kết thúc đơn vị khôi phục. Quay trở lại điểm lưu trữ cho phép hoàn tác các thay đổi đã chọn
Lời kêu gọi
Tuyên bố này có thể được nhúng trong một chương trình ứng dụng hoặc phát hành tương tác. Đó là một câu lệnh thực thi có thể được chuẩn bị động. Nó chỉ có thể được sử dụng trong môi trường IMS hoặc CICS® nếu mệnh đề TO SAVEPOINT được chỉ định
ủy quyền
không yêu cầu
cú pháp
Sự miêu tả
Khi sử dụng ROLLBACK mà không có mệnh đề SAVEPOINT, đơn vị khôi phục trong đó câu lệnh ROLLBACK được thực thi sẽ kết thúc và một đơn vị khôi phục mới được bắt đầu
Tất cả các thay đổi được thực hiện bởi các câu lệnh sau trong đơn vị khôi phục đều được sao lưu
- THAY ĐỔI
- NHẬN XÉT
- TẠO NÊN
- XÓA BỎ
- LÀM RƠI
- GIẢI THÍCH
- KHOẢN TRỢ CẤP
- CHÈN
- NHÃN
- HỢP NHẤT
- BẢNG LÀM MỚI
- ĐỔI TÊN
- THU HỒI
- CHỌN VÀO với câu lệnh thay đổi dữ liệu SQL
- câu lệnh chọn với câu lệnh thay đổi dữ liệu SQL
- TRUNCATE khi mệnh đề IMMEDIATE không được chỉ định
- CẬP NHẬT
ROLLBACK mà không có mệnh đề TO SAVEPOINT cũng khiến các hành động sau xảy ra
- Tất cả các khóa được mua ngầm trong đơn vị khôi phục đều được giải phóng. Xem LOCK TABLE để biết giải thích về thời lượng của các khóa có được một cách rõ ràng
- Tất cả các con trỏ đều bị đóng, tất cả các câu lệnh đã chuẩn bị bị hủy và mọi con trỏ được liên kết với các câu lệnh đã chuẩn bị đều bị vô hiệu
- Tất cả các hàng và tất cả các tệp công việc logic của mọi bảng tạm thời đã tạo của quy trình ứng dụng đều bị xóa. [Tất cả các hàng của bảng tạm thời đã khai báo không bị xóa hoàn toàn. Như với các bảng cơ sở, bất kỳ thay đổi nào được thực hiện đối với bảng tạm thời đã khai báo trong đơn vị khôi phục đều được hoàn tác để khôi phục bảng về trạng thái của nó tại điểm cam kết cuối cùng. ]
- Tất cả các bộ định vị LOB, bao gồm cả những bộ định vị được giữ, được giải phóng
Tất cả các thay đổi cơ sở dữ liệu [bao gồm các thay đổi được thực hiện đối với các bảng tạm thời đã khai báo nhưng không bao gồm các thay đổi được thực hiện đối với các bảng tạm thời đã tạo] được thực hiện sau khi đặt điểm lưu trữ đều bị sao lưu. Những thay đổi được thực hiện đối với các bảng tạm thời đã tạo sẽ không được ghi lại và không được sao lưu; . [Cảnh báo cũng được đưa ra khi một bảng tạm thời đã tạo bị thay đổi và có một điểm lưu trữ đang hoạt động. ]
Ngoài ra, không có mục nào sau đây được sao lưu
- Việc mở hoặc đóng con trỏ
- Thay đổi vị trí con trỏ
- Việc mua lại và giải phóng các ổ khóa
- Bộ nhớ đệm của các câu lệnh được khôi phục
Bất kỳ điểm lưu trữ nào được đặt sau điểm lưu trữ được thực hiện sẽ được giải phóng. Điểm lưu trữ mà rollback được thực hiện không được phát hành
ROLLBACK có hoặc không có mệnh đề TO SAVEPOINT không ảnh hưởng đến các kết nối
ghi chú
Thông tin sau chỉ áp dụng cho khôi phục tất cả các thay đổi trong đơn vị khôi phục [câu lệnh ROLLBACK không có mệnh đề TO SAVEPOINT]
- Thủ tục lưu trữ. Không thể sử dụng câu lệnh ROLLBACK nếu thủ tục nằm trong chuỗi lệnh gọi của hàm do người dùng xác định hoặc trình kích hoạt hoặc nếu Db2 không phải là điều phối viên cam kết.
- IMS hoặc CICS. Việc sử dụng câu lệnh ROLLBACK to SAVEPOINT trong môi trường IMS hoặc CICS chỉ khôi phục tài nguyên Db2 . Mọi tài nguyên có thể phục hồi khác được cập nhật trong môi trường đều không được khôi phục. Để thực hiện thao tác khôi phục trong các môi trường này, các chương trình SQL phải sử dụng lệnh gọi do trình quản lý giao dịch của chúng quy định. Ảnh hưởng của các thao tác khôi phục này đối với dữ liệu Db2 giống như ảnh hưởng của câu lệnh ROLLBACK SQL.
Thao tác khôi phục trong môi trường IMS hoặc CICS có thể xử lý việc đóng con trỏ đã được khai báo bằng tùy chọn giữ VỚI khác với câu lệnh SQL ROLLBACK thực hiện. Nếu một ứng dụng yêu cầu thao tác khôi phục từ CICS hoặc IMS, nhưng không có công việc nào được thực hiện trong Db2 kể từ điểm cam kết cuối cùng, thì yêu cầu khôi phục sẽ không được thực hiện . Nếu ứng dụng đã mở các con trỏ bằng cách sử dụng tùy chọn CÓ GIỮ trong một đơn vị công việc trước đó, thì các con trỏ sẽ không bị đóng và mọi câu lệnh đã chuẩn bị được liên kết với các con trỏ đó sẽ không bị hủy. Db2. If the application had opened cursors using the WITH HOLD option in a previous unit of work, the cursors will not be closed, and any prepared statements associated with those cursors will not be destroyed.
- Thao tác quay lui ngầm định. Trong tất cả các môi trường Db2 , phần cuối của một quy trình là một thao tác hoàn nguyên ngầm định.
ROLLBACK và không gian bảng không LOB không được ghi lại. Nếu ROLLBACK được thực thi cho một đơn vị công việc bao gồm các thay đổi đối với không gian bảng không phải LOB không được ghi lại [chỉ định thuộc tính NOT LOGGED], không gian bảng đó được đánh dấu là RECOVER-pending và không gian bảng được đặt trong danh sách trang logic. Do đó, không gian bảng không khả dụng sau khi thao tác khôi phục hoàn tất. Để biết thêm thông tin về tiện ích RECOVER, hãy xem RECOVER
ROLLBACK và khai báo các bảng tạm thời toàn cầu không được ghi lại. Khi NOT LOGGED được chỉ định trên bảng tạm thời toàn cầu đã khai báo và Db2 phải khôi phục do lỗi, chẳng hạn như lỗi khóa trùng lặp, các hàng sẽ bị xóa hoặc được giữ nguyên .
Nếu tùy chọn ON ROLLBACK DELETE ROWS được chỉ định cho bảng, thì hoạt động chèn, cập nhật và xóa sẽ không được ghi lại. Trong quá trình ROLLBACK hoặc ROLLBACK TO SAVEPOINT, nếu bảng được cập nhật kể từ câu lệnh CAM KẾT cuối cùng, thì tất cả các hàng sẽ bị xóa khỏi bảng. Mọi con trỏ mở cho bảng không có vị trí. Nếu khai báo bảng tạm thời toàn cầu đã khai báo không được cam kết, khai báo của bảng sẽ được khôi phục
Nếu tùy chọn ON ROLLBACK PRESERVE ROWS được chỉ định cho bảng, thì hoạt động chèn, cập nhật và xóa sẽ không được ghi lại. Trong quá trình ROLLBACK hoặc ROLLBACK TO SAVEPOINT, tất cả các hàng trong bảng được giữ nguyên bất kể có bất kỳ cập nhật nào đối với bảng kể từ câu lệnh CAM KẾT cuối cùng. Mọi con trỏ mở cho bảng không có vị trí. Nếu khai báo bảng tạm thời toàn cầu đã khai báo không được cam kết, khai báo của bảng sẽ được khôi phục
Ảnh hưởng của ROLLBACK đối với các biến toàn cục. Các biến toàn cầu không được kiểm soát ở cấp độ giao dịch. Phát hành câu lệnh ROLLBACK không ảnh hưởng đến nội dung của biến toàn cục
Ảnh hưởng của ROLLBACK đối với thao tác chèn. Nếu việc thực thi một câu lệnh INSERT dẫn đến việc tạo một tập dữ liệu trong một vùng bảng và thao tác INSERT được khôi phục, dữ liệu được chèn sẽ bị xóa, nhưng tập dữ liệu không bị xóa