PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Transaktion mit Ausnahmen in Java fortsetzen

Es ist möglich fortzufahren, wenn der Fehler innerhalb eines SAVEPOINT . Hier ist ein Beispiel in psql:

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

Starten Sie eine Transaktion und fügen Sie eine Zeile ein:

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

Starten Sie einen Sicherungspunkt, und fügen Sie dieselbe Zeile zweimal ein. Dies führt zu einem Fehler:

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

Rollen Sie zurück zum Sicherungspunkt und fügen Sie dann eine weitere Zeile ein.

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

Bestätigen und sehen, was da ist:

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