mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 01:03:58 +00:00
fixed [MSSQL] Foreign keys show up in a weird way #734
This commit is contained in:
@@ -13,28 +13,48 @@ SELECT
|
|||||||
deleteAction = rc.DELETE_RULE,
|
deleteAction = rc.DELETE_RULE,
|
||||||
|
|
||||||
objectId = o.object_id
|
objectId = o.object_id
|
||||||
|
|
||||||
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
|
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
|
||||||
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
|
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
|
||||||
|
ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
|
||||||
|
AND C.CONSTRAINT_SCHEMA = FK.CONSTRAINT_SCHEMA
|
||||||
|
|
||||||
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
|
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
|
||||||
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
|
ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
|
||||||
--LEFT JOIN (
|
AND C.UNIQUE_CONSTRAINT_SCHEMA = PK.CONSTRAINT_SCHEMA
|
||||||
--SELECT i1.TABLE_NAME, i2.COLUMN_NAME
|
|
||||||
--FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
|
|
||||||
--INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
|
|
||||||
--WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
|
|
||||||
--) PT ON PT.TABLE_NAME = PK.TABLE_NAME
|
|
||||||
INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc ON FK.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
|
|
||||||
|
|
||||||
LEFT JOIN sys.indexes IX ON IX.name = C.UNIQUE_CONSTRAINT_NAME
|
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
|
||||||
LEFT JOIN sys.objects IXT ON IXT.object_id = IX.object_id
|
ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
|
||||||
LEFT JOIN sys.index_columns IXC ON IX.index_id = IXC.index_id and IX.object_id = IXC.object_id
|
AND C.CONSTRAINT_SCHEMA = CU.CONSTRAINT_SCHEMA
|
||||||
LEFT JOIN sys.columns IXCC ON IXCC.column_id = IXC.column_id AND IXCC.object_id = IXC.object_id
|
|
||||||
LEFT JOIN sys.schemas IXS ON IXT.schema_id = IXS.schema_id
|
|
||||||
|
|
||||||
inner join sys.objects o on FK.TABLE_NAME = o.name
|
INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
|
||||||
inner join sys.schemas s on o.schema_id = s.schema_id and FK.TABLE_SCHEMA = s.name
|
ON FK.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
|
||||||
|
AND FK.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA
|
||||||
|
|
||||||
|
LEFT JOIN sys.indexes IX
|
||||||
|
ON IX.name = C.UNIQUE_CONSTRAINT_NAME
|
||||||
|
AND IX.object_id = OBJECT_ID(PK.TABLE_SCHEMA + '.' + PK.TABLE_NAME)
|
||||||
|
|
||||||
|
LEFT JOIN sys.objects IXT
|
||||||
|
ON IXT.object_id = IX.object_id
|
||||||
|
|
||||||
|
LEFT JOIN sys.index_columns IXC
|
||||||
|
ON IX.object_id = IXC.object_id
|
||||||
|
AND IX.index_id = IXC.index_id
|
||||||
|
|
||||||
|
LEFT JOIN sys.columns IXCC
|
||||||
|
ON IXCC.object_id = IXC.object_id
|
||||||
|
AND IXCC.column_id = IXC.column_id
|
||||||
|
|
||||||
|
LEFT JOIN sys.schemas IXS
|
||||||
|
ON IXT.schema_id = IXS.schema_id
|
||||||
|
|
||||||
|
INNER JOIN sys.objects o
|
||||||
|
ON o.name = FK.TABLE_NAME
|
||||||
|
AND SCHEMA_NAME(o.schema_id) = FK.TABLE_SCHEMA
|
||||||
|
|
||||||
|
INNER JOIN sys.schemas s
|
||||||
|
ON o.schema_id = s.schema_id
|
||||||
|
AND s.name = FK.TABLE_SCHEMA
|
||||||
|
|
||||||
where o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION
|
where o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION
|
||||||
`;
|
`;
|
||||||
|
|||||||
Reference in New Issue
Block a user