Skip to content

Instantly share code, notes, and snippets.

@aroder
Created November 18, 2016 16:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aroder/aa138ed6bff0610e2fc08cc4ac84ff44 to your computer and use it in GitHub Desktop.
Save aroder/aa138ed6bff0610e2fc08cc4ac84ff44 to your computer and use it in GitHub Desktop.
SQL - Query to get detailed info on primary keys
SELECT
PK.CONSTRAINT_NAME,
COLS.TABLE_SCHEMA,
COLS.TABLE_NAME,
COLS.COLUMN_NAME,
COLS.DATA_TYPE,
COLS.COLUMN_DEFAULT,
COLS.CHARACTER_MAXIMUM_LENGTH,
COLS.NUMERIC_PRECISION,
COLS.IS_NULLABLE,
CASE WHEN PK.COLUMN_NAME IS NOT NULL THEN 'PRIMARY KEY' ELSE '' END AS KeyType
FROM INFORMATION_SCHEMA.COLUMNS COLS
LEFT JOIN (
SELECT
KU.TABLE_CATALOG,
KU.TABLE_SCHEMA,
KU.TABLE_NAME,
KU.COLUMN_NAME,
KU.Constraint_Name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KU
ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
) PK
ON COLS.TABLE_CATALOG = PK.TABLE_CATALOG
AND COLS.TABLE_SCHEMA = PK.TABLE_SCHEMA
AND COLS.TABLE_NAME = PK.TABLE_NAME
AND COLS.COLUMN_NAME = PK.COLUMN_NAME
--WHERE PK.Constraint_name = '<optionally filter by the name of the primary key>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment