Sql server 如何通过任何表获取所有表引用?
假设我有表tblDept,它有主键deptid,这也是其他表的引用。意味着我知道一个表tblEmp,其中deptid是从tblDept的主键deptid引用的。现在 我想知道有多少表使用deptid作为referect键(外键)Sql server 如何通过任何表获取所有表引用?,sql-server,sql-server-2008,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2012,假设我有表tblDept,它有主键deptid,这也是其他表的引用。意味着我知道一个表tblEmp,其中deptid是从tblDept的主键deptid引用的。现在 我想知道有多少表使用deptid作为referect键(外键) 请仅推荐MS sql server。以下查询将解决您的问题 SELECT K_Table = FK.TABLE_NAME, FK_Column = CU.COLUMN_NAME, PK_Table = PK.TABLE_NAME, PK_Column = PT.COLU
请仅推荐MS sql server。以下查询将解决您的问题
SELECT
K_Table = FK.TABLE_NAME,
FK_Column = CU.COLUMN_NAME,
PK_Table = PK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
Constraint_Name = 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'
) PT ON PT.TABLE_NAME = PK.TABLE_NAME
--optional where condition
where CU.COLUMN_NAME = 'KeyId'
可能重复的