On Aug 13, 11:23 pm, Shantanu Kumar <
kumar.shant...@gmail.com> wrote:
>
> As far I understand, transactions belong to the user. The user should
> decide what to execute under which transaction. By beginning
> transaction inside these functions, is it assumed that the user can
> wrap bigger constructs under her own transactions and that the JDBC
> driver would support nested transactions?
I'm unsure of why clojure.contrib.sql does start transactions without
documenting them but it is a lot smarter than it first appears. My
understanding is that JDBC relies on the underlying database to
support nested transactions. However, clojure.contrib.sql supports
nested transactions on all databases by keeping a count of the level
of nesting and only executing a database transaction at the outer
level.
http://github.com/richhickey/clojure-contrib/blob/6a0483d9e216ca00fc648a4b3673996b76a2785a/src/main/clojure/clojure/contrib/sql/internal.clj#L144
I don't know if this is an ideal thing to do but my own modest, not
mission critical, use of it has not run into any problems.
Saul