Noções Básicas de Transações
9 exemplos para você começar com transações PostgreSQL - 6 básicos e 3 intermediários.
Busque em todas as páginas da documentação
9 exemplos para você começar com transações PostgreSQL - 6 básicos e 3 intermediários.
Tabelas de exemplo com chaves estrangeiras para observar o comportamento de rollback.
# Desenvolvimento local com Docker (PostgreSQL 18)
docker run -d --name pg18 -e POSTGRES_PASSWORD=dev -p 5432:5432 postgres:18
psql postgres://postgres:dev@localhost:5432/postgresBEGIN inicia um bloco; COMMIT o torna durável.
BEGIN;
UPDATE app.accounts SET name = 'Acme Corp' WHERE id = 1;
COMMIT;ROLLBACK descarta o trabalho não confirmado.
BEGIN;
UPDATE app.accounts SET name = 'Bad' WHERE id = 1;
ROLLBACK;
SELECT name FROM app.accounts WHERE id = 1;Ponto de rollback aninhado.
BEGIN;
INSERT INTO app.accounts (name) VALUES ('Temp');
SAVEPOINT sp1;
UPDATE app.accounts SET name = 'Oops' WHERE name = 'Temp';
ROLLBACK TO sp1;
COMMIT;Falha de instrução única em autocommit aborta apenas essa instrução.
INSERT INTO app.accounts (id, name) VALUES (1, 'dup'); -- falha se id=1 existirA mesma sessão vê as alterações confirmadas.
BEGIN;
INSERT INTO app.accounts (name) VALUES ('NewCo') RETURNING id;
-- a mesma TX vê a linha
COMMIT;Verifica FK no momento do commit.
SET CONSTRAINTS ALL DEFERRED;
BEGIN;
-- reordena as inserções dentro da TX
COMMIT;Formato pseudo-código para serviços.
-- Sessão SQL
BEGIN;
-- instruções de negócios
COMMIT;Transações preparadas para coordenadores externos.
PREPARE TRANSACTION 'txn_abc';
-- depois: COMMIT PREPARED 'txn_abc';Estado de pg_stat_activity.
SELECT pid, xact_start, state, query
FROM pg_stat_activity
WHERE state IN ('idle in transaction','active');Versões da Pilha: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026