Найти отношения внешнего ключа с помощью запроса SQL - PullRequest
2 голосов
/ 09 декабря 2011

Можно ли найти отношения внешнего ключа с помощью SQL-запроса?

База данных является внешней для меня, и я не могу получить к ней доступ напрямую, чтобы увидеть ссылки через Server Management Studio.

Ответы [ 3 ]

7 голосов
/ 09 декабря 2011

Чтобы получить список внешних ключей, вы можете выполнить этот запрос:

SELECT t.name AS FKTableName
   , fk.name AS NameOfForeignKey
   , pc.name AS FKColumn
   , rt.name AS ReferencedTable
   , c.name AS ReferencedColumn
FROM sys.foreign_key_columns AS fkc
INNER JOIN sys.foreign_keys AS fk ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.tables AS t ON fkc.parent_object_id = t.object_id
INNER JOIN sys.tables AS rt ON fkc.referenced_object_id = rt.object_id
INNER JOIN sys.columns AS pc ON fkc.parent_object_id = pc.object_id
   AND fkc.parent_column_id = pc.column_id
INNER JOIN sys.columns AS c ON fkc.referenced_object_id = c.object_id
   AND fkc.referenced_column_id = c.column_id

Этот запрос также можно сделать более сложным, если для вашей настройки требуется дополнительная информация.

2 голосов
/ 09 декабря 2011

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

sys.sysconstraints
sys.columns
sys.tables

Вы можете объединить эти три представления в colid, column_id, object_id для получения полной информации об ограничениях внешнего ключа.

Эти представления должны быть в SQL Server 2005 +

0 голосов
/ 09 декабря 2011

Нет, вы не можете,

Но вы можете проверить это вручную, это неудобно, когда вам нужно запросить каждую таблицу и проверить, какие столбцы [идентификаторы] существуют в каждой из разных таблиц. Чтобы увидеть его отношения.

Привет

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