From: Holger Schauer Date: Wed, 9 Mar 2011 18:20:37 +0000 (+0100) Subject: Port changes of generalization of old mysql-specific autoincrement support. X-Git-Tag: v5.3.0~3 X-Git-Url: http://git.kpe.io/?p=clsql.git;a=commitdiff_plain;h=80c2194145d2cd215dd94f2dc71afee14719c194 Port changes of generalization of old mysql-specific autoincrement support. --- diff --git a/db-mysql/mysql-sql.lisp b/db-mysql/mysql-sql.lisp index eef9f42..503da2a 100644 --- a/db-mysql/mysql-sql.lisp +++ b/db-mysql/mysql-sql.lisp @@ -487,6 +487,12 @@ (%sequence-name-to-table sequence-name)) database :auto nil)))) +(defmethod database-last-auto-increment-id ((database mysql-database) table column) + (declare (ignore table column)) + (car (query "SELECT LAST_INSERT_ID();" + :flatp t :field-names nil + :database database))) + (defmethod database-create (connection-spec (type (eql :mysql))) (destructuring-bind (host name user password) connection-spec (let ((database (database-connect (list host "" user password) diff --git a/sql/db-interface.lisp b/sql/db-interface.lisp index 9c17b54..5cdb719 100644 --- a/sql/db-interface.lisp +++ b/sql/db-interface.lisp @@ -167,6 +167,12 @@ if unable to destory.")) (defgeneric database-sequence-last (name database) (:documentation "Select the last value in sequence NAME in DATABASE.")) +(defgeneric database-last-autoincrement-id (database table column) + (:documentation "Many databases have the notion of an auto-increment + id; i.e. a sequence implicitly on a table. This function should + return that ID." )) + + (defgeneric database-start-transaction (database) (:documentation "Start a transaction in DATABASE.") (:method ((database t)) diff --git a/sql/package.lisp b/sql/package.lisp index 9e9dcb6..3a9fe7c 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -129,6 +129,7 @@ #:database-list-sequences #:database-sequence-last #:database-sequence-exists-p + #:database-last-auto-increment-id #:database-list-attributes #:database-attribute-type #:database-type-library-loaded