Quantcast
Channel: Le Blog SQL Server d'ElSüket » elsuket
Viewing all articles
Browse latest Browse all 197

Lister toutes les contraintes de clé étrangère d’une base de données

$
0
0

Voici un petit snippet permettant d’obtenir la liste de toutes les contraintes de clé étrangère d’une base de données avec :
– le nom de la contrainte,
– le nom de la table référençante,
– le nom de la colonne référençante dans la table référençante,
– le nom de la table référencée,
– le nom de la colonne référencée dans la table référencée.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-------------------------------
-- Nicolas SOUQUET - 09/11/2009
-------------------------------
SELECT    PS.name + '.' + PT.name AS parent_table_name
    , PC.name AS parent_column_name
    , RS.name + '.' + RT.name AS referenced_table_name
    , RC.name AS referenced_column_name
    , FK.name AS foreign_key_name
FROM    sys.schemas AS PS
INNER JOIN  sys.foreign_keys AS FK
      ON PS.schema_id = FK.schema_id
INNER JOIN  sys.foreign_key_columns AS FKC
      ON FK.object_id = FKC.constraint_object_id
INNER JOIN  sys.tables AS PT
      ON FK.parent_object_id = PT.object_id
INNER JOIN  sys.columns AS PC
      ON FKC.parent_object_id = PC.object_id
      AND FKC.parent_column_id = PC.column_id
INNER JOIN  sys.tables AS RT
      ON FK.referenced_object_id = RT.object_id
INNER JOIN  sys.columns AS RC
      ON FKC.referenced_object_id = RC.object_id
      AND FKC.referenced_column_id = RC.column_id
INNER JOIN  sys.schemas AS RS
      ON RT.schema_id = RS.schema_id
WHERE    1 = 1
--AND    RS.name = 'dbo'
--AND    PS.name = 'dbo'
--AND    PT.name = 'maTable'
AND    RT.name = 'maTable'
--AND    RC.name = 'maColonne'
--AND    FK.name = 'maContrainte'
--ORDER BY  parent_table_name
ORDER BY  foreign_key_name

Bonne gestion de l’intégrité référentielle !

ElSüket


Viewing all articles
Browse latest Browse all 197

Trending Articles