Hướng dẫn how to rollback in mysql - cách khôi phục trong mysql

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu về & NBSP; Giao dịch MySQL & NBSP; và cách sử dụng các câu lệnh

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
0 và

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
1 để quản lý các giao dịch trong MySQL.
: in this tutorial, you will learn about MySQL transaction and how to use the

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
0 and

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
1 statements to manage transactions in MySQL.

Giới thiệu về Giao dịch MySQL

Để hiểu một giao dịch trong MySQL là gì, hãy để xem xét một ví dụ về việc thêm một đơn đặt hàng mới trong cơ sở dữ liệu mẫu của chúng tôi. Các bước của việc thêm một đơn đặt hàng được mô tả như sau:

  • Đầu tiên, & nbsp; truy vấn & nbsp; số đơn đặt hàng mới nhất từ ​​bảng & nbsp; ____ 12 và sử dụng số đơn đặt hàng tiếp theo làm số đơn đặt hàng mới.
  • Tiếp theo, chèn một đơn đặt hàng mới vào bảng & nbsp; ________ 12.
  • Sau đó, lấy số đơn đặt hàng mới được chèn vào
  • Sau đó, chèn các mục đặt hàng bán hàng mới vào bảng & nbsp; ____ 14 với số đơn đặt hàng bán hàng
  • Cuối cùng, chọn dữ liệu từ cả hai & NBSP; ________ 12 và

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    4 để xác nhận các thay đổi

Bây giờ, hãy tưởng tượng điều gì sẽ xảy ra với dữ liệu đặt hàng bán hàng nếu một hoặc nhiều bước trên không thành công do một số lý do như khóa bảng? Ví dụ: nếu bước thêm các mục đơn hàng vào bảng

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
4 không thành công, bạn sẽ có một đơn đặt hàng trống.

Đó là lý do tại sao việc xử lý giao dịch đến giải cứu. Giao dịch MySQL cho phép bạn thực hiện một tập hợp các hoạt động MySQL để đảm bảo rằng cơ sở dữ liệu không bao giờ chứa kết quả của các hoạt động một phần. Trong một tập hợp các hoạt động, nếu một trong số chúng thất bại, việc quay lại xảy ra để khôi phục cơ sở dữ liệu về trạng thái ban đầu. Nếu không có lỗi xảy ra, toàn bộ tập hợp các câu lệnh được cam kết với cơ sở dữ liệu.

Báo cáo giao dịch MySQL

MySQL cung cấp cho chúng tôi tuyên bố quan trọng sau đây để kiểm soát các giao dịch:

  • Để bắt đầu một giao dịch, bạn sử dụng câu lệnh

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    8 & NBSP;

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    9 hoặc & nbsp;

    SET autocommit = 1;

    Code language: SQL (Structured Query Language) (sql)
    0 là bí danh của

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    8.
  • Để thực hiện giao dịch hiện tại và thực hiện các thay đổi của nó vĩnh viễn, & nbsp; Bạn sử dụng câu lệnh

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    0.
  • Để quay lại giao dịch hiện tại và hủy các thay đổi của nó, bạn sử dụng câu lệnh

    SET autocommit = OFF

    Code language: SQL (Structured Query Language) (sql)
    1.
  • Để vô hiệu hóa hoặc bật chế độ tự động cam kết cho giao dịch hiện tại, bạn sử dụng câu lệnh

    SET autocommit = 1;

    Code language: SQL (Structured Query Language) (sql)
    4.

Theo mặc định, MySQL tự động thực hiện các thay đổi vĩnh viễn cho cơ sở dữ liệu. Để buộc MySQL không tự động thực hiện các thay đổi, bạn sử dụng câu lệnh sau:

SET autocommit = 0;

Code language: SQL (Structured Query Language) (sql)

Hoặc

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)

Bạn sử dụng câu lệnh sau để kích hoạt chế độ AutoCommit một cách rõ ràng:

SET autocommit = 1;

Code language: SQL (Structured Query Language) (sql)

Hoặc

SET autocommit = ON;

Code language: SQL (Structured Query Language) (sql)

Bạn sử dụng câu lệnh sau để kích hoạt chế độ AutoCommit một cách rõ ràng:

Ví dụ giao dịch MySQL

Hướng dẫn how to rollback in mysql - cách khôi phục trong mysql

Chúng tôi sẽ sử dụng & nbsp; Bảng SET autocommit = OFFCode language: SQL (Structured Query Language) (sql)2 và SET autocommit = 1;Code language: SQL (Structured Query Language) (sql)6 từ cơ sở dữ liệu mẫu để trình diễn.

Ví dụ về ví dụ

Để sử dụng một giao dịch, trước tiên bạn phải chia các câu lệnh SQL thành các phần logic và xác định khi nào dữ liệu nên được thực hiện hoặc quay lại.

  • Sau đây minh họa bước tạo đơn đặt hàng mới:
  • Đầu tiên, hãy bắt đầu giao dịch bởi & nbsp; sử dụng câu lệnh & nbsp; ________ 18 & nbsp;
  • Tiếp theo, chọn số đơn đặt hàng mới nhất từ ​​bảng & NBSP; ____ 12 và sử dụng số đơn đặt hàng tiếp theo làm số đơn đặt hàng mới.
  • Sau đó, chèn một đơn đặt hàng mới vào bảng & nbsp; ________ 12.
  • Sau đó, chèn các mục đặt hàng bán hàng vào bảng & nbsp; ________ 14.

Cuối cùng, hãy thực hiện giao dịch bằng câu lệnh & nbsp; ________ 10.

Tùy chọn, bạn có thể chọn dữ liệu từ cả hai & NBSP; ________ 12 và

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
4 để kiểm tra đơn đặt hàng mới.

Sau đây là tập lệnh thực hiện các bước trên:
Hướng dẫn how to rollback in mysql - cách khôi phục trong mysql

To get the newly created sales order, you use the following query:

SELECT a.orderNumber, orderDate, requiredDate, shippedDate, status, comments, customerNumber, orderLineNumber, productCode, quantityOrdered, priceEach FROM orders a INNER JOIN orderdetails b USING (orderNumber) WHERE a.ordernumber = 10426;

Code language: SQL (Structured Query Language) (sql)

-- 1. start a new transaction START TRANSACTION; -- 2. Get the latest order number SELECT @orderNumber:=MAX(orderNUmber)+1 FROM orders; -- 3. insert a new order for customer 145 INSERT INTO orders(orderNumber, orderDate, requiredDate, shippedDate, status, customerNumber) VALUES(@orderNumber, '2005-05-31', '2005-06-10', '2005-06-11', 'In Process', 145); -- 4. Insert order line items INSERT INTO orderdetails(orderNumber, productCode, quantityOrdered, priceEach, orderLineNumber) VALUES(@orderNumber,'S18_1749', 30, '136', 1), (@orderNumber,'S18_2248', 50, '55.09', 2); -- 5. commit changes COMMIT;

Code language: SQL (Structured Query Language) (sql)
Để nhận được đơn đặt hàng mới được tạo, bạn sử dụng truy vấn sau:

Hướng dẫn how to rollback in mysql - cách khôi phục trong mysql

Đây là đầu ra:

Ví dụ rollback

mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> DELETE FROM orders; Query OK, 327 rows affected (0.03 sec)

Code language: SQL (Structured Query Language) (sql)

Đầu tiên, đăng nhập vào máy chủ cơ sở dữ liệu MySQL và xóa dữ liệu khỏi bảng đơn đặt hàng:

Như bạn có thể thấy từ đầu ra, MySQL xác nhận rằng tất cả các hàng từ bảng

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
2 đã bị xóa.

mysql> SELECT COUNT(*) FROM orders; +----------+ | COUNT(*) | +----------+ | 327 | +----------+ 1 row in set (0.00 sec)

Code language: SQL (Structured Query Language) (sql)

Thứ hai, đăng nhập vào máy chủ cơ sở dữ liệu MySQL trong một phiên riêng biệt và dữ liệu truy vấn từ bảng đơn đặt hàng:

Trong phiên thứ hai này, chúng tôi vẫn có thể xem dữ liệu từ bảng

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
2.

Chúng tôi đã thực hiện các thay đổi trong phiên đầu tiên. Tuy nhiên, những thay đổi không phải là vĩnh viễn. Trong phiên đầu tiên, chúng tôi có thể cam kết hoặc quay lại các thay đổi.

mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)

Code language: SQL (Structured Query Language) (sql)

Đối với mục đích trình diễn, chúng tôi sẽ quay lại các thay đổi trong phiên đầu tiên.

mysql> SELECT COUNT(*) FROM orders; +----------+ | COUNT(*) | +----------+ | 327 | +----------+ 1 row in set (0.00 sec)

Code language: SQL (Structured Query Language) (sql)

Trong phiên đầu tiên, chúng tôi cũng sẽ xác minh nội dung của bảng

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
2:

Như bạn có thể thấy rõ từ đầu ra, những thay đổi đã được quay trở lại.

Trong hướng dẫn này, & nbsp; bạn đã học cách sử dụng các báo cáo giao dịch MySQL bao gồm & nbsp; ________ 18

SET autocommit = ON;

Code language: SQL (Structured Query Language) (sql)
8and

SET autocommit = OFF

Code language: SQL (Structured Query Language) (sql)
1 để quản lý các giao dịch.

Có thể quay lại trong MySQL không?

Một tuyên bố cam kết hoặc rollback kết thúc giao dịch hiện tại và một tuyên bố mới bắt đầu.Nếu một phiên bị vô hiệu hóa AutoCommit kết thúc mà không thực hiện rõ ràng giao dịch cuối cùng, MySQL sẽ quay lại giao dịch đó.If a session that has autocommit disabled ends without explicitly committing the final transaction, MySQL rolls back that transaction.

Làm thế nào để tôi rollback một giao dịch mysql?

Để quay lại giao dịch hiện tại và hủy các thay đổi của nó, bạn sử dụng câu lệnh rollback.Để vô hiệu hóa hoặc bật chế độ tự động cam kết cho giao dịch hiện tại, bạn sử dụng câu lệnh AutoCommit SET.use the ROLLBACK statement. To disable or enable the auto-commit mode for the current transaction, you use the SET autocommit statement.

Làm cách nào để rollback một truy vấn SQL?

Bạn chỉ cần viết giao dịch rollback tuyên bố, theo sau là tên của giao dịch mà bạn muốn quay lại.write the statement ROLLBACK TRANSACTION, followed by the name of the transaction that you want to rollback.

Chúng ta có thể xóa lại xóa trong mysql không?

Bạn có thể hoàn tác xóa trong mysql không?Khi hàng bị xóa, nó đã biến mất.Bạn có thể phải sử dụng sao lưu để khôi phục dữ liệu.Các ngoại lệ cho điều này là nếu bạn đang thực hiện xóa bên trong một giao dịch mở, trong những trường hợp đó, bạn có thể "rollback" giao dịch để hoàn tác mọi thay đổi được thực hiện bên trong giao dịch.