可以说我有表1 =“富”等4个表费用1,费用2,费用3,费用4获取相关的表的列表中,SQL Server 2005的
现在说foo的主键是费用1的外键和费用2。
鉴于'foo'这个名字,我将如何知道fee1和fee2已经为foo定义了关键依赖关系。
请帮忙,伪查询会有帮助。
但是,我知道如何弄清楚foo这个名字如何单独获取foo的foriegn关键依赖关系。使用INFORMATION_SCHEMA.USAGE_KEY_COLUMN。
可以说我有表1 =“富”等4个表费用1,费用2,费用3,费用4获取相关的表的列表中,SQL Server 2005的
现在说foo的主键是费用1的外键和费用2。
鉴于'foo'这个名字,我将如何知道fee1和fee2已经为foo定义了关键依赖关系。
请帮忙,伪查询会有帮助。
但是,我知道如何弄清楚foo这个名字如何单独获取foo的foriegn关键依赖关系。使用INFORMATION_SCHEMA.USAGE_KEY_COLUMN。
的一种方式,只需添加和TC.TABLE_NAME = '富' 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
试试这个在SQL Server管理工作室:
SELECT
fk.name,
OBJECT_NAME(fk.parent_object_id) 'Child table'
FROM
sys.foreign_keys fk
WHERE
fk.referenced_object_id = OBJECT_ID('YourTableNameHEre')
这将列出所有的外键约束以及它们来自哪个表,都是引用您的YourTableNameHere
表。
试试这个
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
为了让您的特定表,添加
`WHERE PK.TABLE_Name = "YourTableName"`
我用sp_help用于提供不同的数据库对象的一决高低视图。指定数据库表时,它将返回有关主键,约束,索引,外键以及它们引用的内容的信息,以及哪些其他表具有指定的外键。记住一次获取这些信息的方法是快速和容易的。