【发布时间】:2015-02-03 18:45:48
【问题描述】:
我有一个包含很多表的数据库,这些表有很多外键。是否有一种简单的方法可以查看给定表中的外键引用的其他表?
我尝试了“查看依赖项”,但这并没有列出所有引用。我也尝试过“脚本表作为 > 创建到”,这对某些表有效,但我对其他表没有足够的权限。
另一个障碍是给定表中的外键与被引用表中的主键名称不同,因此即使我想进行手动搜索(扩展每个表的列)我也不会100% 确定我找到了正确的桌子。
【问题讨论】:
我有一个包含很多表的数据库,这些表有很多外键。是否有一种简单的方法可以查看给定表中的外键引用的其他表?
我尝试了“查看依赖项”,但这并没有列出所有引用。我也尝试过“脚本表作为 > 创建到”,这对某些表有效,但我对其他表没有足够的权限。
另一个障碍是给定表中的外键与被引用表中的主键名称不同,因此即使我想进行手动搜索(扩展每个表的列)我也不会100% 确定我找到了正确的桌子。
【问题讨论】:
我认为以下 stackoverflow link 有您正在寻找的答案。它有多个查询我使用“Gustavo Rubio”指定的查询,请在下面找到相同的查询
SELECT obj.name AS FK_NAME,
sch.name AS [schema_name],
tab1.name AS [table],
col1.name AS [column],
tab2.name AS [referenced_table],
col2.name AS [referenced_column]
FROM
sys.foreign_key_columns fkc
INNER JOIN
sys.objects obj ON obj.object_id = fkc.constraint_object_id
INNER JOIN
sys.tables tab1 ON tab1.object_id = fkc.parent_object_id
INNER JOIN
sys.schemas sch ON tab1.schema_id = sch.schema_id
INNER JOIN
sys.columns col1 ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN
sys.tables tab2 ON tab2.object_id = fkc.referenced_object_id
INNER JOIN
sys.columns col2 ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
ORDER BY
[table] ASC
【讨论】: