Một transaction bọc nhiều câu lệnh thành một đơn vị nguyên tử:
BEGIN(hoặcSTART TRANSACTION): mở transaction.COMMIT: xác nhận, làm mọi thay đổi bền vững và hiển thị cho transaction khác.ROLLBACK: hủy toàn bộ thay đổi từ khi BEGIN, DB trở về như cũ.
Savepoint là mốc lồng bên trong transaction:
- SAVEPOINT sp1 → đặt mốc.
- ROLLBACK TO sp1 → hủy phần thay đổi sau mốc, giữ phần trước, transaction vẫn tiếp tục.
- RELEASE SAVEPOINT sp1 → bỏ mốc.
Dùng savepoint khi muốn thử một phần thao tác có thể lỗi mà không phải bỏ cả transaction (vd xử lý từng dòng trong batch, dòng lỗi rollback riêng).
Thực dụng: giữ transaction càng ngắn càng tốt và không làm I/O bên ngoài (gọi HTTP, đọc file) bên trong — transaction dài giữ lock lâu, chặn giao dịch khác và cản vacuum.