mirror of
https://github.com/dimitri/pgloader.git
synced 2025-08-07 23:07:00 +02:00
fix(mssql): only last column in foreign key definition kept
This commit is contained in:
parent
29afa9de05
commit
f0bb82a4fc
@ -120,7 +120,7 @@
|
||||
|
||||
(defmethod fetch-foreign-keys ((catalog catalog) (mssql copy-mssql)
|
||||
&key including excluding)
|
||||
"Get the list of MSSQL index definitions per table."
|
||||
"Get the list of MSSQL foreign key definitions per table."
|
||||
(loop
|
||||
:with incl-where := (filter-list-to-where-clause
|
||||
mssql including :not nil
|
||||
@ -130,8 +130,8 @@
|
||||
mssql excluding :not t
|
||||
:schema-col "kcu1.table_schema"
|
||||
:table-col "kcu1.table_name")
|
||||
:for (fkey-name schema-name table-name col
|
||||
fschema-name ftable-name fcol
|
||||
:for (fkey-name schema-name table-name cols
|
||||
fschema-name ftable-name fcols
|
||||
fk-update-rule fk-delete-rule)
|
||||
:in (mssql-query (sql "/mssql/list-all-fkeys.sql"
|
||||
(db-name *mssql-db*) (db-name *mssql-db*)
|
||||
@ -143,20 +143,16 @@
|
||||
(table (find-table schema table-name))
|
||||
(fschema (find-schema catalog fschema-name))
|
||||
(ftable (find-table fschema ftable-name))
|
||||
(col-name (apply-identifier-case col))
|
||||
(fcol-name (apply-identifier-case fcol))
|
||||
(pg-fkey
|
||||
(make-fkey :name (apply-identifier-case fkey-name)
|
||||
:table table
|
||||
:columns nil
|
||||
:foreign-table ftable
|
||||
:foreign-columns nil
|
||||
:update-rule fk-update-rule
|
||||
:delete-rule fk-delete-rule))
|
||||
(fkey
|
||||
(maybe-add-fkey table fkey-name pg-fkey :key #'fkey-name)))
|
||||
(push-to-end col-name (fkey-columns fkey))
|
||||
(push-to-end fcol-name (fkey-foreign-columns fkey)))
|
||||
(fkey (make-fkey :table table
|
||||
:columns (mapcar #'apply-identifier-case
|
||||
(sq:split-sequence #\, cols))
|
||||
:foreign-table ftable
|
||||
:foreign-columns (mapcar
|
||||
#'apply-identifier-case
|
||||
(sq:split-sequence #\, fcols))
|
||||
:update-rule fk-update-rule
|
||||
:delete-rule fk-delete-rule)))
|
||||
(add-fkey table fkey)
|
||||
:finally (return catalog)))
|
||||
|
||||
|
||||
|
@ -7,10 +7,10 @@
|
||||
REPLACE(KCU1.CONSTRAINT_NAME, '.', '_') AS 'CONSTRAINT_NAME'
|
||||
, KCU1.TABLE_SCHEMA AS 'TABLE_SCHEMA'
|
||||
, KCU1.TABLE_NAME AS 'TABLE_NAME'
|
||||
, KCU1.COLUMN_NAME AS 'COLUMN_NAME'
|
||||
, STRING_AGG(KCU1.COLUMN_NAME, ',') AS 'COLUMNS'
|
||||
, KCU2.TABLE_SCHEMA AS 'UNIQUE_TABLE_SCHEMA'
|
||||
, KCU2.TABLE_NAME AS 'UNIQUE_TABLE_NAME'
|
||||
, KCU2.COLUMN_NAME AS 'UNIQUE_COLUMN_NAME'
|
||||
, STRING_AGG(KCU2.COLUMN_NAME, ',') AS 'UNIQUE_COLUMN_NAME'
|
||||
, RC.UPDATE_RULE AS 'UPDATE_RULE'
|
||||
, RC.DELETE_RULE AS 'DELETE_RULE'
|
||||
|
||||
@ -34,4 +34,11 @@
|
||||
~:[~*~;and (~{~a~^ or ~})~]
|
||||
~:[~*~;and (~{~a~^ and ~})~]
|
||||
|
||||
ORDER BY KCU1.CONSTRAINT_NAME, KCU1.ORDINAL_POSITION;
|
||||
GROUP BY
|
||||
KCU1.CONSTRAINT_NAME
|
||||
, KCU1.TABLE_SCHEMA
|
||||
, KCU1.TABLE_NAME
|
||||
, KCU2.TABLE_SCHEMA
|
||||
, KCU2.TABLE_NAME
|
||||
, RC.UPDATE_RULE
|
||||
, RC.DELETE_RULE;
|
||||
|
Loading…
Reference in New Issue
Block a user