(外键)依赖关系

时间:2014-04-28 11:13:38

标签: sql sql-server

我想通过从中删除数据来缩小数据库,其中一个烦人的事情是运行我想要的删除查询,以找到我需要删除的依赖项。

INFORMATION.SCHEMA是否包含任何会派上用场的东西?对于这种类型的东西?如果不是,有人可以建议一个简单的方法来找出它们是什么,因为8分钟的等待时间太长。

2 个答案:

答案 0 :(得分:1)

如果右键单击管理工作室中的表格,您可以选择“查看依赖关系”' 这将显示依赖于此表的所有表,视图和其他对象以及此表依赖的表

答案 1 :(得分:0)

用于解决此问题的代码(请注意' PK_Table

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
order by 3