sys.foreign_key_columns (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Warehouse dans microsoft Fabric SQL Database dans Microsoft Fabric SQL Database dans Microsoft Fabric

Contient une ligne pour chaque colonne, ou ensemble de colonnes, comportant une clé étrangère.

Nom de la colonne Type de données Description
constraint_object_id int ID de la contrainte FOREIGN KEY.
constraint_column_id int ID de la colonne, ou du jeu de colonnes, qui comporte la contrainte FOREIGN KEY (1..n où n est le nombre de colonnes).
parent_object_id int ID du parent de la contrainte, qui est l'objet référençant.
parent_column_id int ID de la colonne parente, qui est la colonne référençante.
referenced_object_id int ID de l'objet référencé, qui contient la clé candidate.
referenced_column_id int ID de la colonne référencée (colonne clé candidate).

autorisations

La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.

Exemple de requête

La requête Transact-SQL suivante récupère toutes les clés étrangères dans la base de données, y compris leurs tables et colonnes associées.

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;

Voir aussi