Нахождение первичного ключа в других таблицах - PullRequest
0 голосов
/ 26 марта 2020

У меня возникли некоторые проблемы с поиском соединения некоторых таблиц между базами данных из-за системных привилегий / ограничений (но из-за того, что администраторы вирусов отключены).

По сути, я пытаюсь найти какие / где другие таблицы ссылаются на первичный ключ определенной таблицы (или используются в качестве внешнего ключа).

Есть ли способ сделать это?

Я пробовал:

Выберите имя_таблицы, имя_столбца

Из information_schema.key_column_usage

Но все, что я получаю, это просто список имени таблицы и имени столбца, который я ищу. ..

Кстати, я использую SSMS 18.0 (SQL).

1 Ответ

0 голосов
/ 26 марта 2020

Например:

select object_name(parent_object_id) referencing_table, 
       object_name(referenced_object_id) referenced_table
from sys.foreign_keys

Технически внешний ключ может ссылаться на ключ, отличный от первичного ключа, поэтому, если вы хотите исключить внешние ключи, ссылающиеся на альтернативные ключи, это будет:

select object_name(k.parent_object_id) referencing_table, 
       object_name(k.referenced_object_id) referenced_table
from sys.foreign_keys k
join sys.indexes i
  on i.object_id = k.referenced_object_id
 and i.index_id = k.key_index_id
where i.is_primary_key = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...