Найдите столбец таблицы, на который указывает внешний ключ - PullRequest
0 голосов
/ 27 мая 2020

У меня есть устаревшая база данных Microsoft SQL Server со множеством таблиц. У меня есть внешний ключ в таблице Order под названием CategoryID. Я не могу найти столбец таблицы, на который указывает внешний ключ CategoryID.

У меня нет этого внешнего ключа в папке «Ключи».

Все скрипты, которые я нашел в Интернете, дают мне информация о таблицах, которые указывают на таблицу «Порядок» и ее столбцы (дочерние элементы таблицы «Порядок»), но все они не предоставляют информацию о родительских таблицах.

Есть ли сценарий, который дает имя таблицы и столбца, на которые указывает внешний ключ?

Внешний ключ

1 Ответ

2 голосов
/ 28 мая 2020

Этот сценарий должен вам помочь


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');


Table Structure

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...