Basic Syntax
Simple Transaction
| Database | Output |
|---|---|
| PostgreSQL | BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; |
| MySQL | START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; |
Rollback
Undo all changes in the transaction.Savepoints
Create checkpoints within a transaction.| Database | Output |
|---|---|
| PostgreSQL | BEGIN; INSERT INTO orders ...; SAVEPOINT order_created; INSERT INTO order_items ...; COMMIT; |
Rollback to Savepoint
Undo changes back to a savepoint.Release Savepoint
Remove a savepoint (keep the changes).Isolation Levels
Control how transactions see each other’s changes. Set isolation level before BEGIN.| Level | Description |
|---|---|
READ UNCOMMITTED | Can see uncommitted changes from other transactions |
READ COMMITTED | Only sees committed changes (PostgreSQL default) |
REPEATABLE READ | Consistent reads within transaction (MySQL default) |
SERIALIZABLE | Full isolation, transactions appear sequential |
| Database | Output |
|---|---|
| PostgreSQL | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN; ... |
| MySQL | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; START TRANSACTION; ... |
Complete Examples
Money Transfer
Order with Savepoint
High Isolation Transaction
Database Support
| Feature | PostgreSQL | MySQL | MongoDB |
|---|---|---|---|
| BEGIN/COMMIT/ROLLBACK | Yes | Yes | Yes (sessions) |
| SAVEPOINT | Yes | Yes | No |
| ROLLBACK TO | Yes | Yes | No |
| RELEASE SAVEPOINT | Yes | Yes | No |
| Isolation Levels | Yes | Yes | Yes (read concern) |
MongoDB Note
MongoDB supports multi-document transactions in replica sets and sharded clusters (v4.0+). Savepoints are not supported.Limitations
Not currently supported:- BEGIN READ ONLY
- Inline isolation level (BEGIN ISOLATION LEVEL X)
- Nested transactions

