Re: JDBC behaviour
От | Sridhar N Bamandlapally |
---|---|
Тема | Re: JDBC behaviour |
Дата | |
Msg-id | CAGuFTBUm6833idGepWE9KBP87nYBuzHpTqwmf0981wCdS13K0w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: JDBC behaviour (Sridhar N Bamandlapally <sridhar.bn1@gmail.com>) |
Ответы |
Re: JDBC behaviour
Re: JDBC behaviour |
Список | pgsql-jdbc |
yes John,
but why?, this is not expected behavior
autocommit is just autocommit, its not responsible to treat multi-transactions as single or independent
On Thu, Feb 18, 2016 at 3:08 PM, Sridhar N Bamandlapally <sridhar.bn1@gmail.com> wrote:
let me put this waytable 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 error1. duplicate key value violates unique constraint "employee_pkey"2. current transaction is aborted, commands ignored until end of transaction blockIn PL/SQL ( similar error thrown when used BEGIN-END )postgres=# begin;BEGINpostgres=# insert into employee values (1,'aa');INSERT 0 1postgres=# insert into employee values (2,'bb');INSERT 0 1postgres=# insert into employee values (3,'cc');INSERT 0 1postgres=# 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 blockmy question Java setAutoCommit (false) is behaving like PL/SQL BEGIN-ENDOn Thu, Feb 18, 2016 at 2:54 PM, Andreas Joseph Krogh <andreas@visena.com> wrote:På torsdag 18. februar 2016 kl. 10:20:51, skrev Sridhar N Bamandlapally <sridhar.bn1@gmail.com>:setAutoCommit(false), it should not be treating all next transactions as single set, simple, this is what expected behaviorThe 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 KroghCTO / Partner - Visena ASMobile: +47 909 56 963
Вложения
В списке pgsql-jdbc по дате отправления: