-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFind relationships between the tables.sql
More file actions
32 lines (31 loc) · 1.68 KB
/
Find relationships between the tables.sql
File metadata and controls
32 lines (31 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SELECT TP.NAME 'PARENT TABLE',
TR.NAME 'REFRENCED TABLE',
CP.NAME, CP.COLUMN_ID,
FK.NAME 'FK NAME',
CR.NAME, CR.COLUMN_ID
FROM SYS.FOREIGN_KEYS FK
INNER JOIN SYS.TABLES TP ON FK.PARENT_OBJECT_ID = TP.OBJECT_ID
INNER JOIN SYS.TABLES TR ON FK.REFERENCED_OBJECT_ID = TR.OBJECT_ID
INNER JOIN SYS.FOREIGN_KEY_COLUMNS FKC ON FKC.CONSTRAINT_OBJECT_ID = FK.OBJECT_ID
INNER JOIN SYS.COLUMNS CP ON FKC.PARENT_COLUMN_ID = CP.COLUMN_ID AND FKC.PARENT_OBJECT_ID = CP.OBJECT_ID
INNER JOIN SYS.COLUMNS CR ON FKC.REFERENCED_COLUMN_ID = CR.COLUMN_ID AND FKC.REFERENCED_OBJECT_ID = CR.OBJECT_ID ORDER BY TP.NAME, TR.NAME
------------OR-------------
SELECT
PK_TbL_SCHEMA=PK.TABLE_SCHEMA
, PK_Table = PK.TABLE_NAME
, PK_Column = PT.COLUMN_NAME
, FK_TbL_SCHEMA=FK.TABLE_SCHEMA
, FK_Table = FK.TABLE_NAME
, FK_Column = CU.COLUMN_NAME
, Constraint_Name = C.CONSTRAINT_NAME
, ALTER_CONSTRAINT='ALTER TABLE [' + FK.TABLE_SCHEMA + '].[' + FK.TABLE_NAME + '] DROP CONSTRAINT [' + C.CONSTRAINT_NAME + '];'
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 PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
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' AND i1.TABLE_NAME='SampleTable'
) PT ON PT.TABLE_NAME = PK.TABLE_NAME