Obtenir la list des tables dépendantes, SQL Server 2005

disons que j'ai table1 = 'foo' et 4 autres tables fee1, fee2, fee3, fee4

Maintenant, disons que la key primaire de foo est une key étrangère de fee1 et fee2.

Étant donné le nom 'foo', comment vais-je savoir que fee1 et fee2 ont des dependencies keys sur foo.

S'il vous plaît aider, une requête de psuedo serait utile.

Cependant, je sais comment comprendre le nom de foo comment get les dependencies keys de foo seul. en utilisant INFORMATION_SCHEMA.USAGE_KEY_COLUMN.

Essayez ceci dans SQL Server Mgmt Studio:

SELECT fk.name, OBJECT_NAME(fk.parent_object_id) 'Child table' FROM sys.foreign_keys fk WHERE fk.referenced_object_id = OBJECT_ID('YourTableNameHEre') 

Cela list toutes les contraintes de key étrangère et de quelle table elles proviennent qui referencent votre table YourTableNameHere .

Essaye ça

 SELECT 'CONSTRAINT :' + C.Constraint_Name + ' Goes FROM ' + PK.TABLE_NAME + '.' + PT.COLUMN_NAME + ' To ' + FK.TABLE_NAME + '.' + CU.COLUMN_NAME + ' ----------------------------------------------------- ' FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME INNER JOIN ( SELECT i1.TABLE_NAME, i2.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY' ) PT ON PT.TABLE_NAME = PK.TABLE_NAME 

Pour get votre tableau spécifique, ajoutez

 `WHERE PK.TABLE_Name = "YourTableName"` 

dans un sens, ajoutez simplement AND TC.TABLE_NAME = 'foo' à la clause WHERE

 SELECT TC.CONSTRAINT_SCHEMA + '.'+ TC.TABLE_NAME AS PRIMARYKEYTABLE ,TC.CONSTRAINT_NAME AS PRIMARYKEY ,COALESCE(RC1.CONSTRAINT_NAME,'N/A') AS FOREIGNKEY ,CASE WHEN TC2.TABLE_NAME IS NULL THEN 'N/A' ELSE TC.CONSTRAINT_SCHEMA + '.' + TC2.TABLE_NAME END AS FOREIGNKEYTABLE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC1 ON TC.CONSTRAINT_NAME =RC1.UNIQUE_CONSTRAINT_NAME LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC2 ON TC2.CONSTRAINT_NAME =RC1.CONSTRAINT_NAME WHERE TC.CONSTRAINT_TYPE ='PRIMARY KEY' ORDER BY TC.TABLE_NAME,TC.CONSTRAINT_NAME,RC1.CONSTRAINT_NAME 

De Trouver toutes les keys primaires et étrangères dans une database

J'utilise sp_help pour fournir une vue sommaire des différents objects de la database. Lorsque vous spécifiez une table de database, elle renvoie des informations sur les keys primaires, les contraintes, les index, les foreign keys et leurs references, ainsi que les autres tables ayant des foreign keys à celle spécifiée. Il est rapide et facile de se souvenir de la façon d'get cette information en une fois.