X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Ftransaction.lisp;fp=sql%2Ftransaction.lisp;h=a9d94c9d0ea159605838487be1fd690ef6cf985f;hp=1c6e98b7131f45ba439e21af4712a43d97eec56c;hb=064e2f358705080563d4faf20cd0a724c8c85bac;hpb=be383802fc1f47547eef6d57945023ff71d45657 diff --git a/sql/transaction.lisp b/sql/transaction.lisp index 1c6e98b..a9d94c9 100644 --- a/sql/transaction.lisp +++ b/sql/transaction.lisp @@ -1,8 +1,6 @@ ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; -;;;; $Id$ -;;;; ;;;; Transaction support ;;;; ;;;; This file is part of CLSQL. @@ -60,12 +58,14 @@ is called on DATABASE which defaults to *DEFAULT-DATABASE*." (defmethod database-commit-transaction ((database database)) (with-slots (transaction transaction-level autocommit) database (if (plusp transaction-level) - (when (zerop (decf transaction-level)) - (case (database-underlying-type database) - (:mssql (execute-command "COMMIT TRANSACTION" :database database)) - (t (execute-command "COMMIT" :database database))) - (setf autocommit (previous-autocommit transaction)) - (map nil #'funcall (commit-hooks transaction))) + (if (zerop (decf transaction-level)) + (progn + (case (database-underlying-type database) + (:mssql (execute-command "COMMIT TRANSACTION" :database database)) + (t (execute-command "COMMIT" :database database))) + (setf autocommit (previous-autocommit transaction)) + (map nil #'funcall (commit-hooks transaction))) + (setf (transaction-status (transaction database)) nil)) (warn 'sql-warning :message (format nil "Cannot commit transaction against ~A because there is no transaction in progress."