X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Ftransaction.lisp;h=bf368c007d8b8aaee8fbfe6fe47645d6876274db;hb=7e18531064e864a8b7ed655ca0f139df5509c8cc;hp=d41d6eff7c0f8a33d332a430af54ea617a382607;hpb=333e8280f2f3438ffd379349bc9746c34cccc159;p=clsql.git diff --git a/sql/transaction.lisp b/sql/transaction.lisp index d41d6ef..bf368c0 100644 --- a/sql/transaction.lisp +++ b/sql/transaction.lisp @@ -82,9 +82,10 @@ back and otherwise the transaction is committed." (let ((db (gensym "db-"))) `(let ((,db ,database)) (unwind-protect - (progn + (prog2 (database-start-transaction ,db) - ,@body + (progn + ,@body) (mark-transaction-committed ,db)) (if (eq (transaction-status (transaction ,db)) :committed) (database-commit-transaction ,db) @@ -115,8 +116,10 @@ are called." transaction." (and database (transaction database) (= (transaction-level database) 1))) -(defun autocommit (&key (database *default-database*) (set :unspecified)) - "Returns whether autocommit is currently active." - (unless (eq set :unspecified) - (setf (database-autocommit database) set)) - (database-autocommit database)) +(defun set-autocommit (value &key (database *default-database*)) + "Sets autocommit on or off. Returns old value of of autocommit flag." + (let ((old-value (database-autocommit database))) + (setf (database-autocommit database) value) + (database-autocommit database) + old-value)) +