sys.foreign_key_columns (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse in Microsoft Fabric

Содержит строку для каждого столбца или набора столбцов, представляющих внешний ключ.

Имя столбца Тип данных Description
constraint_object_id int Идентификатор ограничения FOREIGN KEY.
constraint_column_id int Идентификатор столбца или набора столбцов, составляющих FOREIGN KEY (1.n , где n — число столбцов).
parent_object_id int Идентификатор родителя ограничения, ссылающегося на объект.
parent_column_id int Идентификатор родительского столбца, являющегося ссылающимся столбцом.
referenced_object_id int Идентификатор объекта ссылки с потенциальным ключом.
referenced_column_id int Идентификатор столбца ссылки (потенциальный ключевой столбец).

Разрешения

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Пример запроса

Следующий запрос Transact-SQL извлекает все внешние ключи в базе данных, включая связанные таблицы и столбцы.

SELECT fk.name AS ForeignKeyName
    , t_parent.name AS ParentTableName
    , c_parent.name AS ParentColumnName
    , t_child.name AS ReferencedTableName
    , c_child.name AS ReferencedColumnName
FROM sys.foreign_keys fk 
INNER JOIN sys.foreign_key_columns fkc
    ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.tables t_parent
    ON t_parent.object_id = fk.parent_object_id
INNER JOIN sys.columns c_parent
    ON fkc.parent_column_id = c_parent.column_id  
    AND c_parent.object_id = t_parent.object_id 
INNER JOIN sys.tables t_child
    ON t_child.object_id = fk.referenced_object_id
INNER JOIN sys.columns c_child
    ON c_child.object_id = t_child.object_id
    AND fkc.referenced_column_id = c_child.column_id
ORDER BY t_parent.name, c_parent.name;

См. также