PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Continue a transação Postgres com exceções em Java


É possível continuar se a falha estiver dentro de um SAVEPOINT . Segue um exemplo no psql:
# create temporary table foo (i int primary key);
CREATE TABLE

Inicie uma transação e insira uma linha:
# begin;
BEGIN
# insert into foo values(1);
INSERT 0 1

Inicie um ponto de salvamento, insira a mesma linha duas vezes. Isso causará um erro:
# savepoint bar;
SAVEPOINT
# insert into foo values(2);
INSERT 0 1
# insert into foo values(2);
ERROR:  duplicate key value violates unique constraint "foo_pkey"

Volte para o ponto de salvamento e insira outra linha.
# rollback to savepoint bar;
ROLLBACK
# insert into foo values(3);
INSERT 0 1

Comprometa-se e veja o que está lá:
# commit;
COMMIT
# select * from foo;
 i 
---
 1
 3
(2 rows)