Add value check before updating :default slots.
[clsql.git] / sql / oodml.lisp
index 0ddaabad5d5444eda23851945f018cf7d9a3bd67..e575d4df66ae7e58bc921badebe500629eb55a85 100644 (file)
                                  :av-pairs av-pairs
                                  :database database)
                  (when (and pk-slot (not pk))
-                   (setf pk (if (member :auto-increment (listify (view-class-slot-db-constraints pk-slot)))
+                   (setf pk (if (or (member :auto-increment (listify (view-class-slot-db-constraints pk-slot)))
+                                    (not (null (view-class-slot-autoincrement-sequence pk-slot))))
                                 (setf (slot-value obj (slot-definition-name pk-slot))
                                       (database-last-auto-increment-id database
                                                                       table
        (when (and (slot-exists-p slot 'db-constraints)
                   (listp (view-class-slot-db-constraints slot))
                   (member :default (view-class-slot-db-constraints slot)))
-         (update-slot-from-record obj (slot-definition-name slot))))
+          (unless (and (slot-boundp obj (slot-definition-name slot))
+                       (slot-value obj (slot-definition-name slot)))
+           (update-slot-from-record obj (slot-definition-name slot)))))
       ;;this may just be a NOP.
       (setf (slot-value obj 'view-database) database)))