Transaction gom nhiều câu lệnh thành một khối "được ăn cả, ngã về không": commit thì mọi thay đổi được ghi bền vững, rollback thì hủy sạch như chưa từng chạy. Trong lúc chưa commit, thay đổi chưa hiện ra như dữ liệu hoàn chỉnh với transaction khác (theo isolation rules).
Ví dụ chuyển tiền — trừ tài khoản này, cộng tài khoản kia, cả hai phải cùng thành công:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Đây là nền tảng để tránh dữ liệu "nửa vời" trong thanh toán, tồn kho, đặt chỗ và mọi workflow nhiều bước.
A transaction groups several statements into one all-or-nothing block: on commit every change is saved durably; on rollback everything is discarded as if it never ran. Before commit, the changes are not visible as completed data to other transactions (per isolation rules).
Money transfer example — debit one account, credit another, both must succeed together:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;This is the foundation for avoiding half-done data in payments, inventory, booking and any multi-step workflow.