Откат транзакции записи clj - PullRequest
0 голосов
/ 26 ноября 2010

Я использую clj-запись / транзакция два создания двух записей. При ошибке я использую clojure.contrib.condition / Повышение, чтобы вызвать исключение, но это ничего не откатывает. Есть идеи?

1 Ответ

1 голос
/ 26 ноября 2010

Мне нужно было использовать clojure.contrib.sql / set-rollback-only:

(ns my.namespace.txtest
  (:use clojure.contrib.condition)
  (:require clj-record.boot
    [clj-record.callbacks.built-ins     :as cb]
    [clj-record.core                    :as rec]
    [clj-record.validation.built-ins    :as valid]
    [clojure.contrib.sql                :as sql]))

(def db {:classname "com.mysql.jdbc.Driver" 
    :subprotocol "mysql" 
    :user "mydb" 
    :password "password" 
    :subname "//localhost/mydb"})

(defn do-something
  (rec/transaction db
    (do-something)
    (if (some-error-test)
      (do
        (sql/set-rollback-only)
        (raise :type "some-error" :message "Oops")))))
...