PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Continua Transazione Postgres con eccezioni in Java

È possibile continuare se l'errore si trovava all'interno di un SAVEPOINT . Ecco un esempio in psql:

# create temporary table foo (i int primary key);
CREATE TABLE

Inizia una transazione e inserisci una riga:

# begin;
BEGIN
# insert into foo values(1);
INSERT 0 1

Avvia un punto di salvataggio, inserisci la stessa riga due volte. Ciò causerà un errore:

# 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"

Torna al punto di salvataggio, quindi inserisci un'altra riga.

# rollback to savepoint bar;
ROLLBACK
# insert into foo values(3);
INSERT 0 1

Impegnarsi e vedere cosa c'è:

# commit;
COMMIT
# select * from foo;
 i 
---
 1
 3
(2 rows)