Как найти, в каких таблицах столбец из другой таблицы используется в качестве столбца внешнего ключа или обычного столбца в SQL Server - PullRequest
0 голосов
/ 16 апреля 2019

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

Например: перечислить все таблицы, в которых используется столбец tran_id из таблицы Transactions. tran_id может быть внешним ключом или обычным столбцом.

Я попытался использовать следующий запрос, но он возвращает таблицы только с ограничениями внешнего ключа.

SELECT 
    OBJECT_NAME(f.parent_object_id) TableName,
    COL_NAME(fc.parent_object_id, fc.parent_column_id) ColName
FROM 
    sys.foreign_keys AS f
INNER JOIN 
    sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN 
    sys.tables t ON t.OBJECT_ID = fc.referenced_object_id
WHERE 
    OBJECT_NAME (f.referenced_object_id) = 'YourTableName'

Любая помощь? Заранее спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете использовать запрос как этот:

select   tab.name, col.name
from    sys.columns col
inner join sys.tables tab
on col.object_id = tab.object_id
WHERE col.name = 'tran_id'

Затем вам нужно будет вручную найти соответствующие неявные FK.

Относится ли RI частично к уровню логики, а не всегда к серверу базы данных?

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