Maison >base de données >tutoriel mysql >Comment trouver des références de clés étrangères dans SQL Server à l'aide d'Information_Schema ?

Comment trouver des références de clés étrangères dans SQL Server à l'aide d'Information_Schema ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-02 17:20:40818parcourir

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

Obtention de références de clé étrangère avec le schéma d'informations de SQL Server

Dans SQL Server, l'identification de la table et de la colonne à laquelle une clé étrangère fait référence peut être une information précieuse pour comprendre les relations entre les données. Pour obtenir ces informations, nous pouvons exploiter les vues information_schema.

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 

Exemple :

Supposons que nous ayons des tables T_ALV_Ref_FilterDisplay et T_AP_Ref_Customer, et que T_ALV_Ref_FilterDisplay ait une contrainte de clé étrangère référencement T_AP_Ref_Customer.MDT_ID. Pour trouver la table et la colonne référencées, nous pouvons exécuter la requête :

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';

Cela renverrait le résultat suivant :

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

Limitations :

Notez que information_schema n'inclut pas d'informations sur les indices. Si la référence de clé étrangère est basée sur un index unique, vous devrez plutôt utiliser des tables propriétaires Microsoft.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn