Freigeben über


sys.foreign_key_columns (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW) Warehouse in microsoft Fabric SQL-Datenbank in Microsoft Fabric SQL-Datenbank

Enthält eine Zeile für jede Spalte oder Spaltengruppe, die einen Fremdschlüssel enthält.

Spaltenname Datentyp BESCHREIBUNG
constraint_object_id int ID der FOREIGN KEY-Einschränkung.
constraint_column_id int ID der Spalte oder der Spaltengruppe, die die FOREIGN KEY-Anweisung enthält (1..n, wobei n die Anzahl der Spalten darstellt).
parent_object_id int Die ID des übergeordneten Objekts der Einschränkung, das das verweisende Objekt darstellt.
parent_column_id int Die ID der übergeordneten Spalte, die die verweisende Spalte darstellt.
referenced_object_id int Die ID des Objekts, auf das verwiesen wird und das den Kandidatenschlüssel aufweist.
referenced_column_id int Die ID der Spalte, auf die verwiesen wird (Kandidatenschlüsselspalte).

Berechtigungen

Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Beispielabfrage

Die folgende Transact-SQL-Abfrage ruft alle Fremdschlüssel in der Datenbank ab, einschließlich der zugehörigen Tabellen und Spalten.

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;

Siehe auch