Heim >Datenbank >MySQL-Tutorial >Wie finde ich Fremdschlüsselverweise in SQL Server mithilfe von Information_Schema?

Wie finde ich Fremdschlüsselverweise in SQL Server mithilfe von Information_Schema?

Linda Hamilton
Linda HamiltonOriginal
2025-01-02 17:20:40817Durchsuche

How to Find Foreign Key References in SQL Server Using Information_Schema?

Erhalten von Fremdschlüsselreferenzen mit dem Informationsschema von SQL Server

In SQL Server kann die Identifizierung der Tabelle und Spalte, auf die ein Fremdschlüssel verweist, wertvolle Informationen liefern zum Verständnis von Datenbeziehungen. Um diese Informationen zu erhalten, können wir die information_schema-Ansichten nutzen.

SELECT 
     KCU1.CONSTRAINT_SCHEMA AS FK_CONSTRAINT_SCHEMA 
    ,KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME 
    ,KCU1.TABLE_SCHEMA AS FK_TABLE_SCHEMA 
    ,KCU1.TABLE_NAME AS FK_TABLE_NAME 
    ,KCU1.COLUMN_NAME AS FK_COLUMN_NAME 
    ,KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION 
    ,KCU2.CONSTRAINT_SCHEMA AS REFERENCED_CONSTRAINT_SCHEMA 
    ,KCU2.CONSTRAINT_NAME AS REFERENCED_CONSTRAINT_NAME 
    ,KCU2.TABLE_SCHEMA AS REFERENCED_TABLE_SCHEMA 
    ,KCU2.TABLE_NAME AS REFERENCED_TABLE_NAME 
    ,KCU2.COLUMN_NAME AS REFERENCED_COLUMN_NAME 
    ,KCU2.ORDINAL_POSITION AS REFERENCED_ORDINAL_POSITION 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC 

INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1 
    ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG  
    AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA 
    AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME 

INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2 
    ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG  
    AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA 
    AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME 
    AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION 

Beispiel:

Angenommen, wir haben die Tabellen T_ALV_Ref_FilterDisplay und T_AP_Ref_Customer und T_ALV_Ref_FilterDisplay verfügt über eine Fremdschlüsseleinschränkung Verweis auf T_AP_Ref_Customer.MDT_ID. Um die referenzierte Tabelle und Spalte zu finden, können wir die Abfrage ausführen:

SELECT 
    REFERENCED_TABLE_SCHEMA, 
    REFERENCED_TABLE_NAME, 
    REFERENCED_COLUMN_NAME 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
WHERE 
    FK_TABLE_SCHEMA = 'dbo' 
    AND FK_TABLE_NAME = 'T_ALV_Ref_FilterDisplay' 
    AND FK_COLUMN_NAME = 'FA_MDT_ID';

Dies würde das folgende Ergebnis zurückgeben:

REFERENCED_TABLE_SCHEMA | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME
------------------------ | ---------------------- | ----------------------
dbo                      | T_AP_Ref_Customer      | MDT_ID

Einschränkungen:

Beachten Sie, dass das information_schema keine Informationen über Indizes enthält. Wenn die Fremdschlüsselreferenz auf einem eindeutigen Index basiert, müssen Sie stattdessen proprietäre Microsoft-Tabellen verwenden.

Das obige ist der detaillierte Inhalt vonWie finde ich Fremdschlüsselverweise in SQL Server mithilfe von Information_Schema?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn