Sdílet prostřednictvím


sys.foreign_key_columns (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsPdW (Analytics Platform System)Sklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Obsahuje řádek pro každý sloupec nebo sadu sloupců, které tvoří cizí klíč.

Název sloupce Datový typ Description
constraint_object_id int ID omezení CIZÍHO KLÍČE.
constraint_column_id int ID sloupce nebo sady sloupců, které tvoří CIZÍ KLÍČ (1.n, kde n je počet sloupců).
parent_object_id int ID nadřazeného objektu omezení, což je odkazující objekt.
parent_column_id int ID nadřazeného sloupce, což je odkazující sloupec.
referenced_object_id int ID odkazovaného objektu, který má klíč kandidáta.
referenced_column_id int ID odkazovaného sloupce (sloupec klíče kandidáta).

Permissions

Viditelnost metadat v zobrazeních katalogu je omezena na položky, které uživatel vlastní, nebo na které má uživatel udělené určité oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.

Ukázkový dotaz

Následující Transact-SQL dotaz načte všechny cizí klíče v databázi, včetně souvisejících tabulek a sloupců.

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;

Viz také