MariaDB - Giao dịch

Các giao dịch là các hoạt động nhóm tuần tự. Chúng hoạt động như một đơn vị duy nhất và không kết thúc cho đến khi tất cả các hoạt động trong nhóm thực thi thành công. Một lỗi duy nhất trong nhóm khiến toàn bộ giao dịch không thành công và không ảnh hưởng đến cơ sở dữ liệu.

Các giao dịch tuân theo ACID (Tính nguyên tử, Tính nhất quán, Tính cô lập và Độ bền) -

  • Atomicity - Nó đảm bảo sự thành công của tất cả các hoạt động bằng cách hủy bỏ các lỗi và quay lại các thay đổi.

  • Consistency - Nó đảm bảo cơ sở dữ liệu áp dụng các thay đổi trên một giao dịch thành công.

  • Isolation - Nó cho phép các giao dịch độc lập hoạt động của các giao dịch.

  • Durability - Nó đảm bảo sự tồn tại của một giao dịch thành công trong trường hợp hệ thống bị lỗi.

Ở đầu câu lệnh giao dịch là câu lệnh BẮT ĐẦU GIAO DỊCH, sau đó là câu lệnh CAM KẾT và ROLLBACK -

  • BẮT ĐẦU GIAO DỊCH bắt đầu giao dịch.

  • COMMIT lưu các thay đổi đối với dữ liệu.

  • ROLLBACK kết thúc giao dịch, hủy mọi thay đổi.

Đối với một giao dịch thành công, COMMIT thực hiện. Khi bị lỗi, ROLLBACK sẽ hoạt động.

Note- Một số câu lệnh gây ra cam kết ngầm và chúng cũng gây ra lỗi khi được sử dụng trong các giao dịch. Ví dụ về các câu lệnh như vậy bao gồm, nhưng không giới hạn ở CREATE, ALTER và DROP.

Các giao dịch MariaDB cũng bao gồm các tùy chọn như SAVEPOINT và LOCK TABLES. SAVEPOINT đặt điểm khôi phục để sử dụng với ROLLBACK. LOCK TABLES cho phép kiểm soát quyền truy cập vào các bảng trong các phiên để ngăn chặn các sửa đổi trong khoảng thời gian nhất định.

Biến AUTOCOMMIT cung cấp quyền kiểm soát các giao dịch. Cài đặt 1 buộc tất cả các hoạt động được coi là giao dịch thành công và cài đặt 0 khiến các thay đổi liên tục chỉ xảy ra trên một câu lệnh COMMIT rõ ràng.

Cấu trúc của một giao dịch

Cấu trúc chung của một báo cáo giao dịch bao gồm bắt đầu bằng BẮT ĐẦU GIAO DỊCH. Bước tiếp theo là chèn một hoặc nhiều lệnh / thao tác, chèn câu lệnh kiểm tra lỗi, chèn câu lệnh ROLLBACK để quản lý bất kỳ lỗi nào được phát hiện và cuối cùng là chèn câu lệnh COMMIT để áp dụng các thay đổi trên các hoạt động thành công.

Xem lại ví dụ dưới đây -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;