使用SQL Server 2012,我想标记一个不活动的记录。在我做之前,我想检查它的主键是否被引用。如何获取引用表地址中主键ID的每个表中的表名称和列名称的列表(结果集行)?
我尝试搜索“获取引用主键的每个表中的表名和列名的列表”和“在每个引用主键的表中获取列名”,但没有显示相关内容。这是一个棘手的问题(对我来说)。
使用SQL Server 2012,我想标记一个不活动的记录。在我做之前,我想检查它的主键是否被引用。如何获取引用表地址中主键ID的每个表中的表名称和列名称的列表(结果集行)?
我尝试搜索“获取引用主键的每个表中的表名和列名的列表”和“在每个引用主键的表中获取列名”,但没有显示相关内容。这是一个棘手的问题(对我来说)。
编辑:添加一个查询来列出所有外键,引用到您的表的表和引用它的表中的列。
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
WHERE tab2.name = 'TABLENAME'
查询基于本主题回复; How can I list all foreign keys referencing a given table in SQL Server?
ba.name没有限制。 –
谢谢,更新。 –
该查询不提供外键列名称。 –
可能重复的[如何在SQL Server中查找外键依赖关系?](https://stackoverflow.com/questions/925738/how-to-find-foreign-key-dependencies-in-sql-server ) –
谢谢你,斯坦肖。我应该删除我的问题吗? –
如果那个帖子完全回答你的问题,是的。 –