diff options
Diffstat (limited to 'src/clojure/contrib/sql/test.clj')
-rw-r--r-- | src/clojure/contrib/sql/test.clj | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/clojure/contrib/sql/test.clj b/src/clojure/contrib/sql/test.clj index 134bc862..e88cd11f 100644 --- a/src/clojure/contrib/sql/test.clj +++ b/src/clojure/contrib/sql/test.clj @@ -149,7 +149,7 @@ (.getTables nil nil nil (into-array ["TABLE" "VIEW"]))))))) (defn db-exception - "Demonstrate rolling back a partially completed transaction" + "Demonstrate rolling back a partially completed transaction on exception" [] (sql/with-connection db @@ -163,3 +163,29 @@ ;; is not. the exception will cause it to roll back leaving the database ;; untouched. (throw (Exception. "sql/test exception"))))) + +(defn db-rollback + "Demonstrate a rollback-only trasaction" + [] + (sql/with-connection + db + (sql/transaction + (prn "is-rollback-only" (sql/is-rollback-only)) + (sql/set-rollback-only) + (sql/insert-values + :fruit + [:name :appearance] + ["Grape" "yummy"] + ["Pear" "bruised"]) + (prn "is-rollback-only" (sql/is-rollback-only)) + (sql/with-query-results + res + ["SELECT * FROM fruit"] + (doseq [rec res] + (println rec)))) + (prn) + (sql/with-query-results + res + ["SELECT * FROM fruit"] + (doseq [rec res] + (println rec))))) |