diff options
-rw-r--r-- | src/clojure/contrib/sql.clj | 9 | ||||
-rw-r--r-- | src/clojure/contrib/sql/internal.clj | 9 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/clojure/contrib/sql.clj b/src/clojure/contrib/sql.clj index ca9e1c71..77ea1e60 100644 --- a/src/clojure/contrib/sql.clj +++ b/src/clojure/contrib/sql.clj @@ -42,9 +42,12 @@ (defmacro transaction "Evaluates body as a transaction on the open database connection. Any - nested transactions are absorbed into the outermost transaction. All - database updates are committed together as a group after evaluating the - outermost body, or rolled back on any uncaught exception." + nested transactions are absorbed into the outermost transaction. By + default, all database updates are committed together as a group after + evaluating the outermost body, or rolled back on any uncaught + exception. If set-rollback-only is called within scope of the outermost + transaction, the entire transaction will be rolled back rather than + committed when complete." [& body] `(transaction* (fn [] ~@body))) diff --git a/src/clojure/contrib/sql/internal.clj b/src/clojure/contrib/sql/internal.clj index 34278694..4eb0955a 100644 --- a/src/clojure/contrib/sql/internal.clj +++ b/src/clojure/contrib/sql/internal.clj @@ -87,9 +87,12 @@ (defn transaction* "Evaluates func as a transaction on the open database connection. Any - nested transactions are absorbed into the outermost transaction. All - database updates are committed together as a group after evaluating the - outermost func, or rolled back on any uncaught exception." + nested transactions are absorbed into the outermost transaction. By + default, all database updates are committed together as a group after + evaluating the outermost body, or rolled back on any uncaught + exception. If rollback-only is set within scope of the outermost + transaction, the entire transaction will be rolled back rather than + committed when complete." [func] (io! (let [con (connection*) |