MARIADB
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Giao dịch (Transactions) trong MariaDB

Giao dịch (Transaction) là một nhóm các thao tác thực hiện tuần tự, hoạt động như một đơn vị duy nhất. Giao dịch chỉ kết thúc khi tất cả các thao tác trong nhóm được thực thi thành công. Nếu xảy ra lỗi ở bất kỳ thao tác nào, toàn bộ giao dịch sẽ bị hủy và không có thay đổi nào được áp dụng vào cơ sở dữ liệu.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giao dịch tuân theo các nguyên tắc ACID, bao gồm:

  • Atomicity (Nguyên tử): Đảm bảo rằng tất cả các thao tác đều thành công, hoặc nếu xảy ra lỗi, giao dịch sẽ được hủy và các thay đổi sẽ được phục hồi.
  • Consistency (Nhất quán): Đảm bảo cơ sở dữ liệu luôn duy trì trạng thái hợp lệ khi giao dịch thành công.
  • Isolation (Độc lập): Cho phép các giao dịch chạy độc lập mà không ảnh hưởng lẫn nhau.
  • Durability (Bền vững): Đảm bảo rằng dữ liệu của giao dịch đã thành công sẽ được lưu vĩnh viễn, kể cả khi hệ thống gặp sự cố.

Cú pháp cơ bản của giao dịch trong MariaDB

Một giao dịch thường bắt đầu bằng câu lệnh START TRANSACTION và kết thúc bằng các câu lệnh COMMIT hoặc ROLLBACK:

  • START TRANSACTION: Bắt đầu một giao dịch.
  • COMMIT: Xác nhận và lưu các thay đổi vào cơ sở dữ liệu.
  • ROLLBACK: Hủy bỏ giao dịch và phục hồi dữ liệu về trạng thái trước đó.

Trong trường hợp giao dịch thực thi thành công: COMMIT sẽ lưu tất cả thay đổi.
Nếu giao dịch thất bại: ROLLBACK sẽ hủy bỏ toàn bộ các thay đổi.

Lưu ý: Một số câu lệnh như CREATE, ALTER, và DROP sẽ tự động thực hiện COMMIT (gọi là implicit commit) và gây lỗi khi được sử dụng trong giao dịch.

Bài viết này được đăng tại [free tuts .net]

Các tùy chọn bổ sung trong giao dịch của MariaDB

MariaDB cung cấp thêm các tùy chọn hữu ích khi làm việc với giao dịch:

SAVEPOINT: Tạo một điểm khôi phục trong giao dịch. Có thể quay lại điểm này khi sử dụng ROLLBACK TO SAVEPOINT.

LOCK TABLES: Khóa các bảng để kiểm soát truy cập trong giao dịch. Dùng để ngăn việc thay đổi dữ liệu bởi các phiên khác trong khoảng thời gian nhất định.

Biến AUTOCOMMIT:

  • Nếu AUTOCOMMIT = 1 (mặc định): Mỗi thao tác sẽ được coi là một giao dịch thành công ngay lập tức.
  • Nếu AUTOCOMMIT = 0: Các thay đổi chỉ được áp dụng khi sử dụng COMMIT rõ ràng.

Cấu trúc cơ bản của một giao dịch

Cấu trúc của giao dịch bao gồm:

  • Bắt đầu giao dịch bằng lệnh START TRANSACTION.
  • Thực hiện các thao tác (INSERT, UPDATE, DELETE hoặc SELECT).
  • Kiểm tra lỗi (nếu có lỗi, thực hiện ROLLBACK).
  • Lưu các thay đổi bằng cách sử dụng lệnh COMMIT.

Ví dụ:

START TRANSACTION;

-- Bắt đầu truy vấn
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';

-- Cập nhật dữ liệu
UPDATE spring_products SET item = name;

-- Lưu lại các thay đổi
COMMIT;

Cách sử dụng các tính năng nâng cao

Tạo điểm khôi phục với SAVEPOINT

START TRANSACTION;

SAVEPOINT sp1; -- Tạo điểm khôi phục đầu tiên

UPDATE products SET stock = stock - 10 WHERE id = 1;

SAVEPOINT sp2; -- Tạo điểm khôi phục thứ hai

UPDATE products SET stock = stock + 5 WHERE id = 2;

-- Quay lại điểm khôi phục đầu tiên nếu có lỗi
ROLLBACK TO sp1;

COMMIT; -- Lưu thay đổi còn lại

Khóa bảng với LOCK TABLES

LOCK TABLES products WRITE;

INSERT INTO products (name, stock) VALUES ('Product A', 50);

UNLOCK TABLES; -- Mở khóa bảng

Kết bài

Giao dịch trong MariaDB là công cụ mạnh mẽ đảm bảo tính toàn vẹn và đáng tin cậy của dữ liệu trong các hệ thống lớn. Với các tính năng như SAVEPOINT, LOCK TABLES và điều khiển tự động bằng AUTOCOMMIT, người dùng có thể kiểm soát tốt hơn các thao tác trên cơ sở dữ liệu, đặc biệt trong môi trường yêu cầu mức độ chính xác cao.

Cùng chuyên mục:

Biểu thức chính quy (Regular Expression) trong MariaDB

Biểu thức chính quy (Regular Expression) trong MariaDB

Quản lý dữ liệu trùng lặp trong MariaDB

Quản lý dữ liệu trùng lặp trong MariaDB

Dãy số (Sequences) trong MariaDB

Dãy số (Sequences) trong MariaDB

Table Cloning trong MariaDB

Table Cloning trong MariaDB

Bảng tạm (Temporary Tables) trong MariaDB

Bảng tạm (Temporary Tables) trong MariaDB

Indexes & Statistics Tables trong MariaDB

Indexes & Statistics Tables trong MariaDB

Alter Command trong MariaDB

Alter Command trong MariaDB

Transactions trong MariaDB

Transactions trong MariaDB

Biểu thức chính quy trong MariaDB

Biểu thức chính quy trong MariaDB

Giá trị NULL trong MariaDB

Giá trị NULL trong MariaDB

Mệnh đề JOIN trong MariaDB

Mệnh đề JOIN trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề ORDER BY trong MariaDB

Mệnh đề LIKE trong MariaDB

Mệnh đề LIKE trong MariaDB

Câu lệnh DELETE trong MariaDB

Câu lệnh DELETE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Câu lệnh UPDATE trong MariaDB

Mệnh đề WHERE trong MariaDB

Mệnh đề WHERE trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Các kiểu dữ liệu (Data Types) trong MariaDB

Tìm hiểu Select Database trong MariaDB

Tìm hiểu Select Database trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Xóa cơ sở dữ liệu trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Tạo cơ sở dữ liệu (Database) trong MariaDB

Top