diff --git a/src/pgsql/schema.lisp b/src/pgsql/schema.lisp index c0e8198..35dd42c 100644 --- a/src/pgsql/schema.lisp +++ b/src/pgsql/schema.lisp @@ -75,15 +75,23 @@ (apply-identifier-case (pgsql-fkey-name fk) identifier-case)) (table-name (apply-identifier-case (pgsql-fkey-table-name fk) identifier-case)) + (fkey-columns + (mapcar (lambda (column-name) + (apply-identifier-case column-name identifier-case)) + (pgsql-fkey-columns fk))) (foreign-table - (apply-identifier-case (pgsql-fkey-foreign-table fk) identifier-case))) + (apply-identifier-case (pgsql-fkey-foreign-table fk) identifier-case)) + (foreign-columns + (mapcar (lambda (column-name) + (apply-identifier-case column-name identifier-case)) + (pgsql-fkey-foreign-columns fk)))) (format nil - "ALTER TABLE ~a ADD CONSTRAINT ~a FOREIGN KEY(~a) REFERENCES ~a(~a)" + "ALTER TABLE ~a ADD CONSTRAINT ~a FOREIGN KEY(~{~a~^,~}) REFERENCES ~a(~{~a~^,~})" table-name constraint-name - (pgsql-fkey-columns fk) + fkey-columns foreign-table - (pgsql-fkey-foreign-columns fk)))) + foreign-columns))) (defmethod format-pgsql-drop-fkey ((fk pgsql-fkey) &key all-pgsql-fkeys identifier-case) diff --git a/src/sources/mysql-schema.lisp b/src/sources/mysql-schema.lisp index cd39f4d..039158c 100644 --- a/src/sources/mysql-schema.lisp +++ b/src/sources/mysql-schema.lisp @@ -261,11 +261,12 @@ GROUP BY table_name, index_name;" dbname)) GROUP BY table_name, constraint_name, ft;" dbname dbname)) do (let ((entry (assoc table-name schema :test 'equal)) - (fk (make-pgsql-fkey :name name - :table-name table-name - :columns cols - :foreign-table ftable - :foreign-columns fcols))) + (fk + (make-pgsql-fkey :name name + :table-name table-name + :columns (sq:split-sequence #\, cols) + :foreign-table ftable + :foreign-columns (sq:split-sequence #\, fcols)))) (if entry (push fk (cdr entry)) (push (cons table-name (list fk)) schema)))