Created
June 17, 2025 10:20
-
-
Save PiotrFerenc/fc3aff9c1e3d217fba476444e75777f0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT | |
c.TABLE_SCHEMA, | |
c.TABLE_NAME, | |
c.COLUMN_NAME, | |
c.DATA_TYPE, | |
c.IS_NULLABLE, | |
CASE | |
WHEN pk.COLUMN_NAME IS NOT NULL THEN 'YES' | |
ELSE 'NO' | |
END AS IS_PRIMARY_KEY, | |
CASE | |
WHEN fk.COLUMN_NAME IS NOT NULL THEN 'YES' | |
ELSE 'NO' | |
END AS IS_FOREIGN_KEY, | |
fk.REFERENCED_TABLE_NAME, | |
fk.REFERENCED_COLUMN_NAME, | |
CASE | |
WHEN ix.COLUMN_NAME IS NOT NULL THEN 'YES' | |
ELSE 'NO' | |
END AS IS_INDEXED | |
FROM | |
INFORMATION_SCHEMA.COLUMNS c | |
LEFT JOIN ( | |
SELECT | |
ku.TABLE_SCHEMA, | |
ku.TABLE_NAME, | |
ku.COLUMN_NAME | |
FROM | |
INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc | |
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku | |
ON tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME | |
WHERE | |
tc.CONSTRAINT_TYPE = 'PRIMARY KEY' | |
) pk | |
ON c.TABLE_SCHEMA = pk.TABLE_SCHEMA | |
AND c.TABLE_NAME = pk.TABLE_NAME | |
AND c.COLUMN_NAME = pk.COLUMN_NAME | |
LEFT JOIN ( | |
SELECT | |
cu.TABLE_SCHEMA, | |
cu.TABLE_NAME, | |
cu.COLUMN_NAME, | |
ku.TABLE_NAME AS REFERENCED_TABLE_NAME, | |
ku.COLUMN_NAME AS REFERENCED_COLUMN_NAME | |
FROM | |
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc | |
JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ku | |
ON rc.UNIQUE_CONSTRAINT_NAME = ku.CONSTRAINT_NAME | |
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE cu | |
ON rc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME | |
) fk | |
ON c.TABLE_SCHEMA = fk.TABLE_SCHEMA | |
AND c.TABLE_NAME = fk.TABLE_NAME | |
AND c.COLUMN_NAME = fk.COLUMN_NAME | |
LEFT JOIN ( | |
SELECT | |
t.name AS TABLE_NAME, | |
SCHEMA_NAME(t.schema_id) AS TABLE_SCHEMA, | |
col.name AS COLUMN_NAME | |
FROM | |
sys.indexes i | |
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id | |
INNER JOIN sys.columns col ON ic.object_id = col.object_id AND ic.column_id = col.column_id | |
INNER JOIN sys.tables t ON i.object_id = t.object_id | |
WHERE | |
i.is_primary_key = 0 -- opcjonalnie: pomijamy PK, bo i tak są zidentyfikowane osobno | |
) ix | |
ON c.TABLE_SCHEMA = ix.TABLE_SCHEMA | |
AND c.TABLE_NAME = ix.TABLE_NAME | |
AND c.COLUMN_NAME = ix.COLUMN_NAME | |
ORDER BY | |
c.TABLE_SCHEMA, c.TABLE_NAME, c.ORDINAL_POSITION; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment