Dela via


sys.foreign_key_columns (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)Lager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Innehåller en rad för varje kolumn eller uppsättning kolumner som utgör en sekundärnyckel.

Column name Data type Description
constraint_object_id int ID för villkoret FOREIGN KEY.
constraint_column_id int ID för kolumnen, eller uppsättningen med kolumner, som utgör SEKUNDÄRNYCKEL (1..n där n är antalet kolumner).
parent_object_id int ID för den överordnade begränsningen, som är det refererande objektet.
parent_column_id int ID för den överordnade kolumnen, som är referenskolumnen.
referenced_object_id int ID för det refererade objektet, som har kandidatnyckeln.
referenced_column_id int ID för den refererade kolumnen (kandidatnyckelkolumnen).

Permissions

Synligheten för metadata i katalogvyer är begränsad till skyddsbara objekt som en användare antingen äger eller som användaren har beviljats viss behörighet för. För mer information, se inställningar för metadatasynlighet.

Example query

Följande Transact-SQL fråga hämtar alla sekundärnycklar i databasen, inklusive deras relaterade tabeller och kolumner.

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;

See also