sys.foreign_key_columns (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure хранилище платформы Аналитики Azure Synapse Analytics (PDW) в базе данных SQL Microsoft Fabric 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;