X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=db-sqlite3%2Fsqlite3-methods.lisp;h=5ce0ac21759c3d632a452f434c1231d96b0c3ea4;hp=181fca43b894b733c63cddd4f6a7d0e0664f3df3;hb=374df8f34a7214e08fc4cfc5d734d024acdbf9ca;hpb=5bb8544ca8a58d10b57f751bad2c9abf4d7a13c8 diff --git a/db-sqlite3/sqlite3-methods.lisp b/db-sqlite3/sqlite3-methods.lisp index 181fca4..5ce0ac2 100644 --- a/db-sqlite3/sqlite3-methods.lisp +++ b/db-sqlite3/sqlite3-methods.lisp @@ -2,19 +2,19 @@ (in-package #:clsql-sys) -;; This method generates primary key constraints part of the table -;; definition. For Sqlite autoincrement primary keys to work properly -;; this part of the table definition must be left out. -(defmethod database-pkey-constraint ((class standard-db-class) - (database clsql-sqlite3:sqlite3-database))) -(defmethod database-translate-constraint (constraint - (database clsql-sqlite3:sqlite3-database)) - ;; Primary purpose of this is method is to intecept and translate - ;; auto-increment primary keys constraints. - (let ((constraint-name (symbol-name constraint))) - (if (eql constraint :auto-increment) - (cons constraint "PRIMARY KEY AUTOINCREMENT") - (call-next-method)))) +(defmethod database-pkey-constraint ((class standard-db-class) + (database clsql-sqlite3:sqlite3-database)) + (let* ((keys (keyslots-for-class class)) + (cons (when (= 1 (length keys)) + (view-class-slot-db-constraints (first keys))))) + ;; This method generates primary key constraints part of the table + ;; definition. For Sqlite autoincrement primary keys to work properly + ;; this part of the table definition must be left out (IFF autoincrement) . + (when (or (null cons) ;; didnt have constraints to check + ;; didnt have auto-increment + (null (intersection + +auto-increment-names+ + (listify cons)))) + (call-next-method)))) -;; EOF