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