Transaction là một nhóm câu lệnh chạy như một đơn vị nguyên tử — hoặc tất cả thành công, hoặc không gì cả.
- BEGIN: mở transaction.
- COMMIT: xác nhận; mọi thay đổi trở nên bền vững và thấy được với transaction khác.
- ROLLBACK: hủy; đưa DB về trạng thái trước
BEGIN.
Ví dụ chuyển tiền: trừ tài khoản A và cộng tài khoản B phải cùng thành công; nếu bước hai lỗi thì ROLLBACK để không mất tiền. Đây chính là chữ A (Atomicity) trong ACID; DB ghi write-ahead log (WAL) để đảm bảo durability và khôi phục sau crash — còn rollback trong PostgreSQL dựa trên MVCC (bản ghi cũ vẫn còn, transaction chỉ bị đánh dấu hủy).
Lưu ý: autocommit bật mặc định ở nhiều client → mỗi câu lệnh là một transaction; muốn gộp nhiều câu thành một đơn vị phải BEGIN tường minh.