Sql 查找外键指向的表列

Sql 查找外键指向的表列,sql,sql-server,Sql,Sql Server,我有一个遗留的Microsoft SQL Server数据库,其中包含许多表。我在表Order中有一个外键,名为CategoryID。我找不到外键CategoryID指向的表列 “密钥”文件夹中没有此外键 我在网上找到的所有脚本都提供了指向表“Order”及其列(表“Order”的子表)的表的相关信息,但它们都没有提供父表的相关信息 是否有脚本提供外键指向的表和列的名称 此脚本应该对您有所帮助 SELECT OBJECT_NAME(parent_object_id) AS [FK Tab

我有一个遗留的Microsoft SQL Server数据库,其中包含许多表。我在表
Order
中有一个外键,名为
CategoryID
。我找不到外键
CategoryID
指向的表列

“密钥”文件夹中没有此外键

我在网上找到的所有脚本都提供了指向表“Order”及其列(表“Order”的子表)的表的相关信息,但它们都没有提供父表的相关信息

是否有脚本提供外键指向的表和列的名称


此脚本应该对您有所帮助


SELECT 
  OBJECT_NAME(parent_object_id) AS [FK Table],
  name AS [Foreign Key],
  OBJECT_NAME(referenced_object_id) AS [PK Table]
FROM sys.foreign_keys
WHERE parent_object_id = OBJECT_ID('Database.YourSchema.YourTableName');

你也可以试试这个

SELECT 
  OBJECT_NAME(f.parent_object_id) AS [FK Table],
  f.name AS [Foreign Key],
  c.name AS foreignColumnName,
  OBJECT_NAME(f.referenced_object_id) AS [PK Table]
FROM sys.foreign_keys f
inner join sys.foreign_key_columns fk on f.parent_object_id = fk.parent_object_id and f.referenced_object_id = fk.referenced_object_id
inner join sys.tables as t on fk.parent_object_id = t.object_id
inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
WHERE f.parent_object_id = OBJECT_ID('Database.YourSchema.YourTableName');



此脚本应该对您有所帮助


SELECT 
  OBJECT_NAME(parent_object_id) AS [FK Table],
  name AS [Foreign Key],
  OBJECT_NAME(referenced_object_id) AS [PK Table]
FROM sys.foreign_keys
WHERE parent_object_id = OBJECT_ID('Database.YourSchema.YourTableName');

你也可以试试这个

SELECT 
  OBJECT_NAME(f.parent_object_id) AS [FK Table],
  f.name AS [Foreign Key],
  c.name AS foreignColumnName,
  OBJECT_NAME(f.referenced_object_id) AS [PK Table]
FROM sys.foreign_keys f
inner join sys.foreign_key_columns fk on f.parent_object_id = fk.parent_object_id and f.referenced_object_id = fk.referenced_object_id
inner join sys.tables as t on fk.parent_object_id = t.object_id
inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
WHERE f.parent_object_id = OBJECT_ID('Database.YourSchema.YourTableName');



这可能/可能取决于您使用的特定RDBMS(Microsoft、Oracle、Postgres等)。你能将它添加到帖子中吗(例如作为标签)?它也可以“指向”多个表。。。我用的是SQL数据库(不是MySQL)。我在发布问题时添加了标签。现在我在问题的文本中添加了“SQL”。如果它指向多个表,那么我想知道它们的所有名称。SQL是一种由ISO/ANSI定义的语言,由一系列产品支持。您使用的是哪一种?这可能取决于您使用的特定RDBMS(Microsoft、Oracle、Postgres等)。你能将它添加到帖子中吗(例如作为标签)?它也可以“指向”多个表。。。我用的是SQL数据库(不是MySQL)。我在发布问题时添加了标签。现在我在问题的文本中添加了“SQL”。如果它指向多个表,那么我想知道它们的所有名称。SQL是一种由ISO/ANSI定义的语言,由一系列产品支持。你用的是哪一种?非常感谢。代码是有效的。但是问题是(正如我上面提到的)这个特定的外键(CategoryID)不包括在这个表的文件夹“Keys”中。因此,您的代码显示除特定外键之外的所有其他外键。(请看附在第一篇文章后面的截图)。CategoryID是一个外键,而不是一个外键(不包括在“键”中)。请您为特定的外键而不是所有的外键重写代码好吗。谢谢。顺便说一句,如果我在其中添加“and name='CategoryID'”,它显然没有显示任何内容。是否有可能一个外键未在sys.foreign_keys中注册?@alex你能尝试删除该键并重新添加它吗?非常感谢。代码是有效的。但是问题是(正如我上面提到的)这个特定的外键(CategoryID)不包括在这个表的文件夹“Keys”中。因此,您的代码显示除特定外键之外的所有其他外键。(请看附在第一篇文章后面的截图)。CategoryID是一个外键,而不是一个外键(不包括在“键”中)。请您为特定的外键而不是所有的外键重写代码好吗。谢谢。顺便说一句,如果我在其中添加“and name='CategoryID'”,它显然没有显示任何内容。是否有可能一个外键未在sys.foreign_keys中注册?@alex你能尝试删除该键并再次添加它吗