2010-07-13 2 views

Répondre

3
SELECT 
K_Table = FK.TABLE_NAME, 
FK_Column = CU.COLUMN_NAME, 
PK_Table = PK.TABLE_NAME, 
PK_Column = PT.COLUMN_NAME, 
Constraint_Name = C.CONSTRAINT_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 
---- optional: 
ORDER BY 
1,2,3,4 
WHERE PK.TABLE_NAME='something'WHERE FK.TABLE_NAME='something' 
WHERE PK.TABLE_NAME IN ('one_thing', 'another') 
WHERE FK.TABLE_NAME IN ('one_thing', 'another') 
+1

yikes - Je vais enregistrer celui-ci – Matt

+1

Cette réponse a été copiée et collée à partir d'ici: http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key -relationships-and-name-of-the-constraint-for-each-table-in-database/ Nous devrions vraiment créditer nos sources –

+0

Quand je publierai une réponse pour s quelqu'un ... si je ne crédite pas la source originale. Je n'ai aucun problème avec l'aide nazi revenir et me faire savoir que je n'ai vraiment pas aidé parce que, je devrais créditer la solution. Sheesh. –

1
declare @keys table 
( 
    ForeignKey varchar(100), 
    TableName varchar(100), 
    ColumnName varchar(100), 
    ReferenceTableName varchar(100), 
    ReferenceColumnName varchar(100) 
) 
insert @keys 
SELECT f.name AS ForeignKey, 
TableName = OBJECT_NAME(f.parent_object_id), 
ColumnName = COL_NAME(fc.parent_object_id, 
fc.parent_column_id), 
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, 
COL_NAME(fc.referenced_object_id, 
fc.referenced_column_id) AS ReferenceColumnName 
FROM sys.foreign_keys AS f 
INNER JOIN sys.foreign_key_columns AS fc 
ON f.OBJECT_ID = fc.constraint_object_id 

select * from @Keys where TableName='X' and ColumnName='Y' 
Questions connexes