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

ClientDefault
psqlAutocommit ON
JDBCAutocommit ON (set false for batches)
psycopg2/3Autocommit 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

RELEASE SAVEPOINT sp1;
ActionEffect
RELEASEDiscard SP (cannot roll back to it later)
ROLLBACK TOUndo 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

ROLLBACK AND CHAIN;
Note: CHAIN preserves transaction characteristics (READ ONLY, SERIALIZABLE) for the next transaction.