Giao dịch trong MySQL là một nhóm tuần tự các câu lệnh, truy vấn hoặc thao tác như chọn, chèn, cập nhật hoặc xóa để thực hiện như một đơn vị công việc duy nhất có thể được cam kết hoặc khôi phục. Nếu giao dịch thực hiện nhiều sửa đổi vào cơ sở dữ liệu, có hai điều xảy ra Show
Nói cách khác, một giao dịch không thể thành công nếu không hoàn thành từng thao tác có sẵn trong tập hợp. Có nghĩa là nếu bất kỳ câu lệnh nào không thành công, thao tác giao dịch không thể tạo ra kết quả Một giao dịch trong MySQL bắt đầu bằng câu lệnh SQL thực thi đầu tiên và kết thúc khi nó tìm thấy một cam kết hoặc được khôi phục rõ ràng hoặc ngầm định. Nó sử dụng rõ ràng câu lệnh COMMIT hoặc ROLLBACK và ngầm định khi sử dụng câu lệnh DDL Hãy để chúng tôi hiểu khái niệm về một giao dịch thông qua giải thích sau đây Chúng ta có thể hiểu khái niệm giao dịch trong MySQL bằng cách xem xét cơ sở dữ liệu ngân hàng. Giả sử một khách hàng của ngân hàng muốn chuyển tiền từ tài khoản này sang tài khoản khác. Chúng ta có thể đạt được điều này bằng cách sử dụng các câu lệnh SQL sẽ được chia thành các bước sau
Thuộc tính của giao dịchGiao dịch chứa chủ yếu bốn thuộc tính, được gọi là thuộc tính ACID. Bây giờ, chúng ta sẽ thảo luận chi tiết về thuộc tính ACID. Thuộc tính ACID là viết tắt của
nguyên tử. Thuộc tính này đảm bảo rằng tất cả các câu lệnh hoặc hoạt động trong đơn vị giao dịch phải được thực hiện thành công. Mặt khác, nếu bất kỳ hoạt động nào không thành công, toàn bộ giao dịch sẽ bị hủy bỏ và nó sẽ quay trở lại trạng thái trước đó. Nó bao gồm các tính năng
Tính nhất quán. Thuộc tính này đảm bảo rằng cơ sở dữ liệu chỉ thay đổi trạng thái khi một giao dịch sẽ được thực hiện thành công. Nó cũng chịu trách nhiệm bảo vệ dữ liệu khỏi sự cố. Nó bao gồm các tính năng
Sự cách ly. Tính chất này đảm bảo từng nghiệp vụ trong đơn vị giao dịch hoạt động độc lập. Nó cũng đảm bảo rằng các câu lệnh minh bạch với nhau. Nó bao gồm các tính năng
Độ bền. Thuộc tính này đảm bảo rằng kết quả của các giao dịch đã cam kết sẽ tồn tại vĩnh viễn ngay cả khi hệ thống gặp sự cố hoặc lỗi. Nó bao gồm các tính năng
Tuyên bố giao dịch MySQLCác giao dịch kiểm soát MySQL với sự trợ giúp của câu lệnh sau
Một lần nữa, sử dụng câu lệnh dưới đây để bật chế độ tự động cam kết Ví dụ giao dịch MySQLGiả sử chúng ta có hai bảng tên là "nhân viên" và "Đơn hàng" chứa dữ liệu sau Bàn. người lao động Bàn. mệnh lệnh CAM KẾT Ví dụNếu chúng ta muốn sử dụng một giao dịch, bắt buộc phải chia các câu lệnh SQL thành các phần hợp lý. Sau đó, chúng tôi có thể xác định xem dữ liệu sẽ được cam kết hay khôi phục Các bước sau đây minh họa để tạo một giao dịch
Dưới đây là các lệnh thực hiện các thao tác trên Hình ảnh dưới đây giải thích nó rõ ràng hơn Ví dụ về QUAY LẠIChúng ta có thể hiểu giao dịch quay lui với sự trợ giúp của hình minh họa sau. Đầu tiên, mở dấu nhắc lệnh MySQL và đăng nhập vào máy chủ cơ sở dữ liệu bằng mật khẩu. Tiếp theo, chúng ta phải chọn một cơ sở dữ liệu Giả sử cơ sở dữ liệu của chúng tôi chứa bảng "Đơn hàng". Bây giờ, sau đây là các tập lệnh thực hiện các thao tác khôi phục Sau khi thực hiện câu lệnh trên, chúng ta sẽ nhận được kết quả như bên dưới hiển thị tất cả các bản ghi từ bảng Đơn đặt hàng đã được xóa thành công Bây giờ, chúng ta cần mở một phiên riêng của máy chủ cơ sở dữ liệu MySQL và thực hiện câu lệnh bên dưới để xác minh dữ liệu trong bảng Đơn hàng Nó sẽ cho đầu ra như dưới đây Mặc dù chúng tôi đã thực hiện các thay đổi trong phiên đầu tiên, chúng tôi vẫn có thể thấy các bản ghi có sẵn trong bảng. Đó là bởi vì các thay đổi không phải là vĩnh viễn cho đến khi chúng ta chưa thực hiện câu lệnh COMMIT hoặc ROLLBACK trong phiên đầu tiên Do đó, nếu chúng ta muốn thay đổi vĩnh viễn, hãy sử dụng câu lệnh COMMIT. Nếu không, hãy thực thi câu lệnh ROLLBACK để khôi phục các thay đổi trong phiên đầu tiên Sau khi thực hiện thành công, nó sẽ tạo ra kết quả sau, nơi chúng ta có thể thấy rằng thay đổi đã được khôi phục Các câu lệnh không thể khôi phục khi sử dụng Giao dịch MySQL Giao dịch MySQL không thể khôi phục tất cả các câu lệnh. Ví dụ: các câu lệnh này bao gồm các lệnh DDL (Ngôn ngữ Định nghĩa Dữ liệu) chẳng hạn như cơ sở dữ liệu CREATE, ALTER hoặc DROP cũng như các bảng CREATE, UPDATE hoặc DROP hoặc các quy trình được lưu trữ. Chúng tôi phải đảm bảo rằng khi chúng tôi thiết kế giao dịch của mình, những tuyên bố này không bao gồm SAVEPOINT, QUAY LẠI VỀ SAVEPOINT, PHÁT HÀNH SAVEPOINTCâu lệnh SAVEPOINT tạo một dấu đặc biệt với tên của mã định danh bên trong một giao dịch. Nó cho phép tất cả các câu lệnh được thực thi sau điểm lưu trữ sẽ được khôi phục. Vì vậy, giao dịch khôi phục về trạng thái trước đó tại điểm lưu trữ. Nếu chúng tôi đã đặt nhiều điểm lưu trữ trong giao dịch hiện tại có cùng tên, thì điểm lưu trữ mới chịu trách nhiệm khôi phục Câu lệnh ROLLBACK TO SAVEPOINT cho phép chúng tôi khôi phục tất cả các giao dịch về điểm lưu trữ đã cho đã được thiết lập mà không hủy bỏ giao dịch Câu lệnh RELEASE SAVEPOINT phá hủy điểm lưu trữ đã đặt tên khỏi giao dịch hiện tại mà không hoàn tác tác động của các truy vấn được thực hiện sau khi điểm lưu trữ được thiết lập. Sau những câu lệnh này, không có lệnh rollback nào xảy ra. Nếu điểm lưu trữ không tồn tại trong giao dịch, nó sẽ báo lỗi Sau đây là cú pháp của các câu lệnh trên trong Giao dịch MySQL Thí dụHãy cho chúng tôi hiểu cách sử dụng các câu lệnh này thông qua ví dụ. Trong ví dụ dưới đây, chúng ta sẽ sử dụng các câu lệnh SAVEPOINT và ROLLBACK TO SAVEPOINT giải thích cách một điểm lưu trữ xác định bản ghi nào của giao dịch hiện tại có thể được khôi phục Ở trên,
Đầu ra bên dưới giải thích các bước trên theo thứ tự tuần tự giúp hiểu nó rất dễ dàng Bây giờ, chúng ta sẽ sử dụng câu lệnh SELECT để xác minh thao tác trên. Ở đầu ra, chúng ta có thể thấy rằng tất cả các câu lệnh trong giao dịch được thực hiện thành công. Ở đây, cả câu lệnh INSERT và UPDATE đều sửa đổi bảng tại COMMIT Chúng ta có thể khôi phục xóa trong MySQL không?Bạn có thể hoàn tác XÓA trong MySQL không? . Bạn có thể sẽ phải sử dụng bản sao lưu để khôi phục dữ liệu. Các trường hợp ngoại lệ đối với điều này là nếu bạn đang xóa bên trong một Giao dịch đang mở, thì trong những trường hợp đó bạn có thể "Hoàn tác" giao dịch để hoàn tác mọi thay đổi được thực hiện bên trong giao dịch.
Tại sao rollback không hoạt động trong MySQL?Điều này có nghĩa là mỗi câu lệnh SQL riêng lẻ được coi là một giao dịch và được tự động thực hiện ngay sau khi nó được thực thi. Vì vậy, nếu bạn cần tự mình thực hiện giao dịch, bạn phải tắt chế độ tự động xác nhận bởi AUTOCOMMIT = 0 . Tham khảo liên kết này để biết thêm thông tin. Lưu câu trả lời này. |