Một câu lệnh SQL đã được thực thi thành công và một giao dịch đã cam kết không giống nhau. Ngay cả khi một câu lệnh SQL được thực thi thành công, trừ khi giao dịch chứa câu lệnh được cam kết, nó có thể được khôi phục và tất cả các thay đổi được thực hiện bởi [các] câu lệnh có thể được hoàn tác
Bắt đầu và kết thúc Giao dịch
Một giao dịch bắt đầu và kết thúc. Giao dịch bắt đầu khi một trong các sự kiện diễn ra sau đây
Câu lệnh SQL đầu tiên được thực hiện sau khi kết nối với cơ sở dữ liệu
Tại mỗi câu lệnh, SQL mới được phát hành sau khi hoàn thành một giao dịch
Giao dịch kết thúc khi một trong các sự kiện diễn ra sau đây
Tuyên bố COMMIT hoặc ROLLBACK được đưa ra
Một câu lệnh DDL , giả sử có giới hạn như câu lệnh CREATE TABLE , được phát hành;
Một tuyên bố DCL , thật sự như tuyên bố CẤP CẤP , được phát hành ;
User ngắt kết nối với cơ sở dữ liệu
Người dùng thoát khỏi SQL * PLUS bằng cách ra lệnh EXIT , COMMIT sẽ tự động được thực hiện
SQL * Plus kết thúc bất thường, ROLLBACK được thực hiện tự động
Một lệnh DML không thành công;
Xác nhận [cam kết] một giao dịch
Một giao dịch được thực hiện vĩnh viễn bằng cách đưa ra lệnh SQL COMMIT. Cú pháp chung cho lệnh COMMIT là
LÀM;
Ví dụ,
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [2, 'Khilan', 25, 'Delhi', 1500.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [3, 'kaushik', 23, 'Kota', 2000.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [4, 'Chaitali', 25, 'Mumbai', 6500.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [5, 'Hardik', 27, 'Bhopal', 8500.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [6, 'Komal', 22, 'MP', 4500.00 ];
CAM KẾT;
Rollback giao dịch
Các thay đổi được thực hiện đối với cơ sở dữ liệu không có CAM KẾT có thể được hoàn thành bằng lệnh ROLLBACK
Cú pháp chung cho lệnh ROLLBACK là
QUAY LẠI [TO SAVEPOINT < savepoint_name>];
Khi một giao dịch bị hủy bỏ do một số vấn đề chưa từng có, chẳng hạn như lỗi hệ thống, toàn bộ giao dịch kể từ khi cam kết sẽ tự động được khôi phục. Nếu bạn không sử dụng savepoint , thì chỉ cần sử dụng câu lệnh sau để khôi phục tất cả các thay đổi
QUAY LẠI;
Điểm lưu trữ
Savepoints là loại điểm đánh dấu giúp chia một giao dịch dài thành các đơn vị nhỏ hơn bằng cách thiết lập một số điểm kiểm tra. Bằng cách thiết lập các điểm lưu trong một giao dịch dài, bạn có thể quay lại điểm kiểm tra nếu cần. Điều này được thực hiện bằng cách sử dụng lệnh SAVEPOINT
Cú pháp chung cho lệnh SAVEPOINT là
SAVEPOINT < savepoint_name >;
Ví dụ
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [7, 'Rajnish', 27, 'HP', 9500.00 ];
CHÈN VÀO KHÁCH HÀNG [ID,TÊN,AGE,ADDRESS,SALARY]
GIÁ TRỊ [8, 'Riddhi', 21, 'WB', 4500.00 ];
SAVEPOINT sav1;
CẬP NHẬT KHÁCH HÀNG
ĐẶT LƯƠNG = LƯƠNG + 1000;
QUAY LẠI VỀ sav1;
CẬP NHẬT KHÁCH HÀNG
ĐẶT LƯƠNG = LƯƠNG + 1000
ID WHERE = 7;
CẬP NHẬT KHÁCH HÀNG
ĐẶT LƯƠNG = LƯƠNG + 1000
ID WHERE = 8;
CAM KẾT;
ROLLBACK TO sav1 - Lệnh này quay trở lại tất cả các thay đổi cho đến thời điểm mà bạn đã đánh dấu savepoint sav1
Sau đó, những thay đổi mới mà bạn thực hiện sẽ bắt đầu
Kiểm tra giám sát giao dịch tự động
Để thực hiện COMMIT tự động bất kể khi nào lệnh INSERT, UPDATE hoặc DELETE được thực thi, bạn có thể đặt biến môi trường AUTOCOMMIT là AUTOCOMMIT