Compartilhar via


sys.foreign_key_columns (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Warehouse do PDW (Analytics Platform System) no Microsoft Fabric

Contém uma linha para cada coluna, ou conjunto de colunas, que inclui uma chave estrangeira.

Nome da coluna Tipo de dados Descrição
constraint_object_id int ID da restrição FOREIGN KEY.
constraint_column_id int ID da coluna, ou conjunto de colunas, que inclui FOREIGN KEY (1..n onde n é o número de colunas).
parent_object_id int ID do pai da restrição, que é o objeto de referência.
parent_column_id int ID da coluna pai, que é a coluna de referência.
referenced_object_id int ID do objeto referenciado, que tem a chave candidata.
referenced_column_id int ID da coluna referenciada (coluna da chave candidata).

Permissões

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Metadata Visibility Configuration.

Consulta de exemplo

A consulta Transact-SQL a seguir recupera todas as chaves estrangeiras no banco de dados, incluindo suas tabelas e colunas relacionadas.

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;

Confira também