-- Tables with Primary Keys defined -- Note : Multiple rows are returned when the PK involves more than one column SELECT TC.TABLE_NAME ,CU.COLUMN_NAME ,TC.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON TC.CONSTRAINT_NAME = CU.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
Tables with Foreign Keys -
-- Tables with Foreign Keys defined -- Note : Multiple rows are returned when the FK involves more than one colum SELECT TC.TABLE_NAME ,CU.COLUMN_NAME ,TC.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON TC.CONSTRAINT_NAME = CU.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'FOREIGN KEY'
How the keys are linked -
-- How Referential Integrity is enforced -- i.e. data being present in related table before insert is allow SELECT UNIQUE_CONSTRAINT_NAME AS PRIMARY_KEY_CONSTRAINT ,CONSTRAINT_NAME AS FOREIGN_KEY_CONSTRAINT FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
Greater detail about the FK to PK Relationships.
Includes Table and Column information.
-- How Referential Integrity is enforced -- Expand to show referenced columns SELECT CONSTRAINTSLINK.CONSTRAINT_NAME AS FOREIGN_KEY_CONSTRAINT ,FOREIGNKEY.TABLE_NAME AS REFERENCINGTABLE ,FOREIGNKEY.COLUMN_NAME AS REFERENCINGCOLUMN ,CONSTRAINTSLINK.UNIQUE_CONSTRAINT_NAME AS PRIMARY_KEY_CONSTRAINT ,PRIMARYKEY.TABLE_NAME AS REFERENCEDTABLE ,PRIMARYKEY.COLUMN_NAME AS REFERENCEDCOLUMN FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS CONSTRAINTSLINK INNER JOIN (SELECT TC.TABLE_NAME ,UC.COLUMN_NAME ,TC.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE UC ON TC.CONSTRAINT_NAME = UC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY') PRIMARYKEY ON CONSTRAINTSLINK.UNIQUE_CONSTRAINT_NAME = PRIMARYKEY.CONSTRAINT_NAME INNER JOIN (SELECT TC.TABLE_NAME ,UC.COLUMN_NAME ,TC.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE UC ON TC.CONSTRAINT_NAME = UC.CONSTRAINT_NAME AND TC.CONSTRAINT_TYPE = 'FOREIGN KEY') FOREIGNKEY ON CONSTRAINTSLINK.CONSTRAINT_NAME = FOREIGNKEY.CONSTRAINT_NAME ORDER BY CONSTRAINTSLINK.CONSTRAINT_NAME ,FOREIGNKEY.TABLE_NAME ,FOREIGNKEY.COLUMN_NAME
No comments:
Post a Comment