From: | Andreas Joseph Krogh <andreas(at)visena(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: JDBC behaviour |
Date: | 2016-02-18 09:46:12 |
Message-ID: | VisenaEmail.100.3a3abd9c7ae96d92.152f3c1e851@tc7-visena |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers pgsql-jdbc |
På torsdag 18. februar 2016 kl. 10:38:23, skrev Sridhar N Bamandlapally <
sridhar(dot)bn1(at)gmail(dot)com <mailto:sridhar(dot)bn1(at)gmail(dot)com>>:
let me put this way
table employee ( id PrimaryKey, name )
In Java ( just little pseudo-code way )
try {
conn.setAutoCommit(false);
try { executeUpdate("insert into employee(id,name) values(1, 'K1')"); }
catch ...
try { executeUpdate("insert into employee(id,name) values(1, 'K1')"); }
catch ...
try { executeUpdate("insert into employee(id,name) values(1, 'K2')"); }
catch ...
conn.commit();
} catch ...
throws error
1. duplicate key value violates unique constraint "employee_pkey"
2. current transaction is aborted, commands ignored until end of transaction
block
In PL/SQL ( similar error thrown when used BEGIN-END )
postgres=# begin;
BEGIN
postgres=# insert into employee values (1,'aa');
INSERT 0 1
postgres=# insert into employee values (2,'bb');
INSERT 0 1
postgres=# insert into employee values (3,'cc');
INSERT 0 1
postgres=# insert into employee values (1,'aa');
ERROR: duplicate key value violates unique constraint "employee_pkey"
DETAIL: Key (eid)=(1) already exists.
postgres=# insert into employee values (4,'dd');
ERROR: current transaction is aborted, commands ignored until end of
transaction block
my question Java setAutoCommit (false) is behaving like PL/SQL BEGIN-END
You are free to ignore what we tell you about the transaction being invalid
after an exception, and try all you want to issue new statements. But it will
all result in errors like the above. Youhave to issue a ROLLBACK to proceed,
and PG knows this so it refuses to do anything until you do.
I other words; There is no way to issue a statement without getting an error
in a transaction marked as invalid. This is what transactions are for,
guaranteeing consistent results.
-- Andreas Joseph Krogh
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andreas(at)visena(dot)com <mailto:andreas(at)visena(dot)com>
www.visena.com <https://www.visena.com>
<https://www.visena.com>
From | Date | Subject | |
---|---|---|---|
Next Message | John R Pierce | 2016-02-18 09:52:45 | Re: JDBC behaviour |
Previous Message | Sridhar N Bamandlapally | 2016-02-18 09:42:37 | Re: JDBC behaviour |
From | Date | Subject | |
---|---|---|---|
Next Message | John R Pierce | 2016-02-18 09:52:45 | Re: JDBC behaviour |
Previous Message | Etsuro Fujita | 2016-02-18 09:45:47 | Re: Optimization for updating foreign tables in Postgres FDW |
From | Date | Subject | |
---|---|---|---|
Next Message | John R Pierce | 2016-02-18 09:52:45 | Re: JDBC behaviour |
Previous Message | Sridhar N Bamandlapally | 2016-02-18 09:42:37 | Re: JDBC behaviour |