Tôi có thể khôi phục sau khi cam kết mysql không?

Đôi khi bạn có thể cần hoàn tác các thay đổi đã thực hiện đối với cơ sở dữ liệu MySQL. Bạn có thể dễ dàng làm điều đó bằng cách sử dụng MySQL Rollback query. Đây là cách khôi phục cơ sở dữ liệu MySQL bằng lệnh MySQL Rollback

 

Khôi phục MySQL hoạt động như thế nào

Câu lệnh Rollback của MySQL cho phép bạn khôi phục hoặc hoàn tác thêm một câu lệnh đã được thực hiện gần đây. Ví dụ: nếu bạn vô tình xóa hoặc cập nhật các hàng, bạn có thể sử dụng MySQL khôi phục các câu lệnh đó và khôi phục cơ sở dữ liệu ban đầu. Tuy nhiên, khôi phục MySQL chỉ hoạt động nếu các thay đổi cơ sở dữ liệu KHÔNG được cam kết với cơ sở dữ liệu

Phần thưởng đọc. Cách sử dụng Tổng hợp MySQL

 

Chúng ta có thể quay lại sau khi cam kết trong MySQL không

Không. Thật không may, bạn không thể hoàn tác các thay đổi đã được cam kết với cơ sở dữ liệu

 

Cách khôi phục cơ sở dữ liệu MySQL

Xin lưu ý, theo mặc định, MySQL được cấu hình để tự động thực hiện mọi truy vấn SQL. Vì vậy, điều quan trọng là tắt tự động cam kết trong MySQL bằng cách sử dụng câu lệnh sau, nếu bạn muốn có thể sử dụng MySQL Rollback

Đăng nhập vào cơ sở dữ liệu MySQL và chạy lệnh sau để tắt autocommit

SET autocommit = 0

Hoặc

SET autocommit = OFF

Bạn sử dụng câu lệnh sau để bật chế độ autocommit một cách rõ ràng

SET autocommit = 1

Hoặc

SET autocommit = ON

 

Phần thưởng đọc. Cách kiểm tra phiên bản MySQL

 

Giả sử bạn có bảng bán hàng sau(product,order_date,sale). Chúng tôi sẽ xem xét cách phát hành khôi phục MySQL sau lệnh xóa

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

 

Bây giờ chúng ta hãy tắt autocommit như đã đề cập ở trên,

mysql> set autocommit=0;

 

Tiếp theo, hãy để chúng tôi xóa tất cả các hàng trong bảng bán hàng

mysql> delete from sales;
Query OK, 5 rows affected (0.00 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        0 |
+----------+

Như bạn có thể thấy tất cả 5 hàng trong bảng bán hàng đã bị xóa

 

Bây giờ, chúng ta hãy phát hành MySQL Rollback sau lệnh xóa

mysql> rollback;
Query OK, 0 rows affected (0.07 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        5 |
+----------+

Như bạn có thể thấy, 5 hàng đã xóa đã được khôi phục do các thay đổi không được cam kết. Tuy nhiên, nếu bạn gặp sự cố với câu lệnh COMMIT sau khi xóa và trước lệnh ROLLBACK, thì MySQL sẽ không khôi phục bảng của bạn

 

Phần thưởng đọc. Cách vô hiệu hóa kiểm tra khóa ngoại trong MySQL

 

Lệnh cập nhật khôi phục MySQL

Tương tự, bạn có thể khôi phục lệnh cập nhật. Hãy để chúng tôi cập nhật cột bán hàng trong bảng bán hàng ở trên

________số 8

Như bạn có thể thấy, chúng tôi đã tăng gấp đôi giá trị của cột giảm giá. Bây giờ chúng ta hãy rollback lệnh cập nhật

mysql> rollback;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Như bạn có thể thấy các giá trị cũ của cột bán hàng đã được khôi phục

Bạn cũng có thể bao gồm Khôi phục MySQL trong các thủ tục được lưu trữ và giao dịch MySQL cho Khôi phục MySQL do lỗi. Điều quan trọng là vô hiệu hóa autocommit để thực thi khôi phục MySQL

Trong hướng dẫn này, bạn đã học cách sử dụng các câu lệnh giao dịch MySQL bao gồm 
SET autocommit = OFF
08
SET autocommit = OFF
18and
SET autocommit = OFF
01 để quản lý giao dịch

Có thể khôi phục sau khi cam kết trong MySQL không?

COMMIT lưu vĩnh viễn các thay đổi được thực hiện bởi giao dịch hiện tại. ROLLBACK hoàn tác các thay đổi được thực hiện bởi giao dịch hiện tại. 2. Giao dịch không thể hoàn tác các thay đổi sau khi thực hiện CAM KẾT .

Bạn có thể khôi phục sau khi cam kết SQL không?

Không thể khôi phục giao dịch sau khi câu lệnh CAM KẾT GIAO DỊCH được thực thi , trừ khi GIAO DỊCH CAM KẾT được liên kết với giao dịch lồng nhau có trong giao dịch đang được khôi phục.

Có cần cam kết sau khi khôi phục không?

Nếu bạn khôi phục giao dịch, tất cả các thay đổi được thực hiện trong giao dịch đó chỉ là. quay trở lại, hủy bỏ. Vì vậy, cam kết của bạn trong khối cuối cùng sẽ không làm gì , ít nhất là khi bạn không có giao dịch nào khác đang chờ.