Managing Transactions
1. Starting Transaction
BEGIN; -- or START TRANSACTION
-- ... statements ...
COMMIT;
2. Committing Transaction
COMMIT;
COMMIT AND CHAIN; -- commit and immediately open new TX (same iso/access)
3. Rolling Back Transaction
ROLLBACK;
ROLLBACK TO SAVEPOINT sp1;
ROLLBACK AND CHAIN;
4. Using Autocommit Mode
| Client | Default |
| psql | Autocommit ON |
| JDBC | Autocommit ON (set false for batches) |
| psycopg2/3 | Autocommit OFF (must commit) |
5. Disabling Autocommit
\set AUTOCOMMIT off -- psql
-- subsequent statements run in implicit transaction until COMMIT
6. Creating Savepoint
BEGIN;
SAVEPOINT before_risky;
INSERT INTO ... ;
ROLLBACK TO SAVEPOINT before_risky; -- undo just this part
COMMIT;
7. Rolling Back to Savepoint
ROLLBACK TO SAVEPOINT sp1;
-- TX still open; can re-attempt or COMMIT
8. Releasing Savepoint
| Action | Effect |
| RELEASE | Discard SP (cannot roll back to it later) |
| ROLLBACK TO | Undo subsequent work, keep SP |
9. Using COMMIT AND CHAIN
COMMIT AND CHAIN;
-- equivalent to COMMIT; BEGIN; with same isolation/access mode
10. Using ROLLBACK AND CHAIN
Note: CHAIN preserves transaction characteristics (READ ONLY, SERIALIZABLE) for the next transaction.