Re: questions regarding transactions

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: questions regarding transactions
Дата
Msg-id 469546AB.5060905@enterprisedb.com
обсуждение исходный текст
Ответ на questions regarding transactions  (Fabian Zeindl <fabian@xover.htu.tuwien.ac.at>)
Список pgsql-jdbc
Fabian Zeindl wrote:
> 1) Am I supposed to do "myConn.rollback()" on error? What happens if I
> don't do it - will the transaction stay half-committed?! (I ask this,
> because rollback() can throw a SQLException, so it's not guaranteed to
> work, in my opinion).

Yes. The transaction will stay open until you end it with commit,
rollback, or disconnect the connection.

> 2) When I use statements like (SELECT currval('somesequence')) in a
> jdbc-transaction, will it be atomic to? Will the sequence be decremented
> again when the transaction fails? Can I get wrong numbers, when there is
> another transaction which increments somesequence?

Sequences are not transactional in that sense. If a transaction is
rolled back, the sequence won't be decremented. If you really need to
guarantee that there's no gaps in a series of numbers, you'll need to
use other means.

I'm not sure what you mean by wrong numbers, but two transactions will
never get the same number if that's what you mean. Sequences are safe to
use concurrently from multiple transactions, that's what they're for.

> 3) Is it sufficient to do setAutocommit(false) and set the
> transaction-level or do I have to call a statement like "START
> TRANSACTION" to properly start an transaction? (I found
> the latter example somewhere on the net.)

setAutocommit is the right way to do it. You shouldn't issue BEGIN or
any other transaction-related statements yourself.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Fabian Zeindl
Дата:
Сообщение: questions regarding transactions
Следующее
От: "Marcel Steinbach"
Дата:
Сообщение: incomplete batch-inserts