thepcafe

Cùng tìm hiểu những điều cơ bản về MySQL Transaction

Tổng kết: trong bài này, mình sẽ giới thiệu về MySQL transaction và cách sử dụng câu lệnh COMMIT và ROLLBACK để quản lý các transactions trong MySQL.

Giới thiệu về MySQL transactions

Để hiểu transaction trong MySQL là gì, hãy cùng xem ví dụ về thêm một order trên trang bán hàng. Các bước để thêm một order mới được miêu tả cụ thể dưới đây:

  • Đầu tiên, insert một bản ghi order mới vào bảng orders.
  • Sau đó, insert các sản phẩm/order items vào bảng orderdetails với order id tương ứng.
  • Cuối cùng, lấy dữ liệu từ cả 2 bảng orders và orderdetails.

Bây giờ hãy cùng tưởng tượng xem điều gì sẽ xảy ra với dữ liệu của order nếu một hoặc nhiều bước trong danh sách trên xảy ra lỗi vì một vài lý do như table locking? Ví dụ, nếu bước thêm các sản phẩm vào bảng orderdetails bị lỗi, khi hiển thị chi tiết order sẽ không có gì cả, bạn sẽ có một order trắng trơn.

Đó chính là lý do cho sự ra đời của transaction processing. MySQL transaction cho phép bạn thực hiện một tập các câu lệnh MySQL để đảm bảo chắc chắn rằng database sẽ không bao giờ chứa dữ liệu không đầy đủ. Trong tập các câu lệnh, chỉ cần 1 câu bị lỗi thì sẽ thực hiện rollback để khôi phục lại trạng thái ban đầu của database. Nếu không có lỗi xảy ra, toàn bộ tập các câu lệnh sẽ được thực thi.

Cú pháp của MySQL transaction

MySQL cung cấp các câu lệnh quan trọng sau đây để kiểm soát transactions:

  • Để bắt đầu một transaction, sử dụng câu lệnh START TRANSACTION. Có thể dùng BEGIN hoặc  BEGIN WORK như là định danh thay cho START TRANSACTION.
  • Để ra lệnh thực thi transaction hiện tại, sử dụng câu lệnh COMMIT.
  • Để huỷ/roll back transaction hiện tại và khôi phục những thay đổi trong database, sử dụng câu lệnh ROLLBACK.
  • Để bật tắt chế độ auto-commit cho transaction hiện tại, dùng câu lệnh SET autocommit.

Mặc định thì MySQL sẽ tự động thực thi những thay đổi tới database. Để chặn MySQL không thực thi tự động thì dùng câu lệnh dưới đây:

SET autocommit = 0;

hoặc

SET autocommit = OFF

Để bật lại chế độ tự động thực thi câu lệnh khi thay đổi thì dùng lệnh sau:

SET autocommit = 1;

hoặc

SET autocommit = ON;

Tags

Có thể bạn quan tâm

Cẩn thận, sql có thể kill transaction của bạn bất kỳ khi nào.

1. Deadlock xảy ra khi nào.Deadlock là hiện tượng tranh chấp tài nguyên giữa hai hay nhiều lệnh trong đó lệnh này giữ tài nguyên mà lệnh k...