Compartir a través de


sys.foreign_key_columns (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW) Warehouse en microsoft Fabric SQL Database 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 en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario ha recibido algún permiso. 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