;;;; Programmers: Marc Battyani
;;;; Date Started: Apr 2002
;;;;
-;;;; $Id: transactions.cl,v 1.3 2002/05/10 08:05:48 marc.battyani Exp $
+;;;; $Id: transactions.cl,v 1.7 2002/09/17 17:16:43 kevin Exp $
;;;;
;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(status :initform nil :accessor status))) ;can be nil :rolled-back or :commited
(defmethod database-start-transaction ((database closed-database))
- (signal-closed-database-error database))
+ (error 'clsql-closed-database-error database))
(defmethod database-start-transaction (database)
(unless (transaction database)
(execute-command "BEGIN" :database database))))
(defmethod database-end-transaction ((database closed-database))
- (signal-closed-database-error database))
+ (error 'clsql-closed-database-error database))
(defmethod database-end-transaction (database)
(if (> (transaction-level database) 0)
(map nil #'funcall (commit-hooks transaction)))
(unwind-protect ;status is not :commited
(execute-command "ROLLBACK" :database database)
- (map nil #'funcall (rollback-hooks database))))))
+ (map nil #'funcall (rollback-hooks transaction))))))
(warn "Continue without commit."
'clsql-simple-error
:format-control "Cannot commit transaction against ~A because there is no transaction in progress."
(when (and (transaction database)(not (status (transaction database))))
(setf (status (transaction database)) :commited)))
-(defun add-transaction-commit-hook (database abort-hook)
+(defun add-transaction-commit-hook (database commit-hook)
(when (transaction database)
- (push abort-hook (abort-hooks (transaction database)))))
+ (push commit-hook (commit-hooks (transaction database)))))
(defun add-transaction-rollback-hook (database rollback-hook)
(when (transaction database)
`(let ((,db ,database))
(unwind-protect
(progn
- (start-transaction ,db)
+ (database-start-transaction ,db)
,@body
(commit-transaction ,db))
(database-end-transaction ,db)))))