From: | Sridhar N Bamandlapally <sridhar(dot)bn1(at)gmail(dot)com> |
---|---|
To: | Andreas Joseph Krogh <andreas(at)visena(dot)com> |
Cc: | List <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | Re: JDBC behaviour |
Date: | 2016-02-18 09:38:23 |
Message-ID: | CAGuFTBXnVvX8cmbxF7HYhfrTQf9_pUTU=Lq2F4Niq-4jiObCzg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers pgsql-jdbc |
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
On Thu, Feb 18, 2016 at 2:54 PM, Andreas Joseph Krogh <andreas(at)visena(dot)com>
wrote:
> På torsdag 18. februar 2016 kl. 10:20:51, skrev Sridhar N Bamandlapally <
> sridhar(dot)bn1(at)gmail(dot)com>:
>
> setAutoCommit(false), it should not be treating all next transactions as
> single set, simple, this is what expected behavior
>
>
> The point is that all subsequent statements (after an exception) are part
> of *the same* transaction (in autocommit=false mode). So you have to
> issue an explicit ROLLBACK before any new statement can give meaningful
> results.
>
> --
> *Andreas Joseph Krogh*
> CTO / Partner - Visena AS
> Mobile: +47 909 56 963
> andreas(at)visena(dot)com
> www.visena.com
> <https://www.visena.com>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Sridhar N Bamandlapally | 2016-02-18 09:42:37 | Re: JDBC behaviour |
Previous Message | John R Pierce | 2016-02-18 09:34:38 | Re: [JDBC] JDBC behaviour |
From | Date | Subject | |
---|---|---|---|
Next Message | Sridhar N Bamandlapally | 2016-02-18 09:42:37 | Re: JDBC behaviour |
Previous Message | John R Pierce | 2016-02-18 09:34:38 | Re: [JDBC] JDBC behaviour |
From | Date | Subject | |
---|---|---|---|
Next Message | Sridhar N Bamandlapally | 2016-02-18 09:42:37 | Re: JDBC behaviour |
Previous Message | John R Pierce | 2016-02-18 09:34:38 | Re: [JDBC] JDBC behaviour |