PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Continuer la transaction Postgres avec des exceptions en Java

Il est possible de continuer si l'échec était à l'intérieur d'un SAVEPOINT . Voici un exemple en psql :

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

Commencez une transaction et insérez une ligne :

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

Démarrez un point de sauvegarde, puis insérez la même ligne deux fois. Cela provoquera une erreur :

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

Revenez au point de sauvegarde, puis insérez une autre ligne.

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

Validez et voyez ce qu'il y a :

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