Điểm lưu trữ mysql

Trong chương trình này, chúng ta sẽ thảo luận về các giao dịch trong PL/SQL. Một giao dịch cơ sở dữ liệu là một đơn vị công việc nguyên tử có thể bao gồm một hoặc nhiều câu lệnh SQL liên quan. Nó được gọi là nguyên tử vì các sửa đổi cơ sở dữ liệu do các câu lệnh SQL tạo thành một giao dịch mang lại có thể được cam kết chung, tức là được thực hiện vĩnh viễn với cơ sở dữ liệu hoặc được phục hồi (

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