Làm cách nào để khôi phục một bảng cụ thể trong SQL?

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

ROLLBACKWORKTO SAVEPOINTsavepoint-name

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
TO SAVEPOINTSChỉ định rằng đơn vị khôi phục sẽ không bị kết thúc và chỉ thực hiện khôi phục một phần [về điểm lưu trữ]. Nếu tên điểm lưu trữ không được chỉ định, khôi phục là điểm lưu trữ hoạt động cuối cùng. Ví dụ: nếu trong một đơn vị khôi phục, các điểm lưu trữ A, B và C được đặt theo thứ tự đó và sau đó C được giải phóng, ROLLBACK TO SAVEPOINT gây ra quá trình khôi phục về điểm lưu trữ B. savepoint-name Xác định điểm lưu trữ để khôi phục. Tên phải xác định một điểm lưu trữ tồn tại tại máy chủ hiện tại.

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

Lệnh ROLLBACK trong SQL là gì?

ROLLBACK là lệnh SQL được dùng để hoàn nguyên các thay đổi được thực hiện bởi một giao dịch . Khi một lệnh ROLLBACK được đưa ra, nó sẽ hoàn nguyên tất cả các thay đổi kể từ lần CAM KẾT hoặc ROLLBACK cuối cùng.

Làm cách nào để ROLLBACK trong SQL Server sau khi xóa?

BEGIN TRẦN. Giao dịch hiện đã bị xóa. Vì giao dịch bị khóa bởi BEGIN TRANSACTION nên tôi có thể khôi phục bản ghi đã xóa ở trên bằng cách sử dụng lệnh ROLLBACK . Sau khi thực hiện lệnh ROLLBACK và chạy câu lệnh chọn, chúng tôi thấy rằng chúng tôi đã khôi phục thành công bản ghi đã xóa của mình.

Chúng ta có thể ROLLBACK drop table trong SQL không?

Bạn không thể khôi phục câu lệnh DROP TABLE . Ghi chú. Đối với bảng bên ngoài, câu lệnh này chỉ xóa siêu dữ liệu của bảng trong cơ sở dữ liệu. Nó không ảnh hưởng đến dữ liệu thực tế nằm bên ngoài cơ sở dữ liệu.

Ví dụ về ROLLBACK trong SQL Server là gì?

ROLLBACK trong SQL là ngôn ngữ kiểm soát giao dịch được sử dụng để hoàn tác các giao dịch chưa được lưu trong cơ sở dữ liệu . Lệnh chỉ được sử dụng để hoàn tác các thay đổi kể từ lần CAM KẾT cuối cùng. Thí dụ. Xem xét bảng NHÂN VIÊN sau với các bản ghi. NHÂN VIÊN.

Chủ Đề