sys.foreign_key_columns (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Almacenamiento en Microsoft Fabric

Contiene una fila para cada columna o conjunto de columnas que componen una clave externa.

Nombre de la columna Tipo de datos Descripción
constraint_object_id int Id. de la restricción FOREIGN KEY.
constraint_column_id int Identificador de la columna, o del conjunto de columnas, que componen FOREIGN KEY (1..n, donde n es el número de columnas).
parent_object_id int Id. del elemento primario de la restricción, que es el objeto que hace la referencia.
parent_column_id int Id. de la columna primaria, que es la columna que hace la referencia.
referenced_object_id int Id. del objeto al que se hace referencia, que tiene la clave candidata.
referenced_column_id int Id. de la columna a la que se hace referencia (columna de clave candidata).

Permisos

La visibilidad de los metadatos de las vistas de catálogo se limita a elementos protegibles que un usuario posee o en el que se concedió algún permiso al usuario. Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplo de consulta

La siguiente consulta de Transact-SQL recupera todas las claves externas de la base de datos, incluidas sus tablas y columnas 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;

Consulte también