在 Sql Server 2005 中,我有一个主表,以及通过几个一对多关系与该主表相关的其他几个表。如何在“多”端找到与主表中的主键相关的所有表和字段?
我知道我可以通过从 INFORMATION_SCHEMA 查询视图来提取此信息,但我不知道在哪里可以找到此信息。
谢谢
在 Sql Server 2005 中,我有一个主表,以及通过几个一对多关系与该主表相关的其他几个表。如何在“多”端找到与主表中的主键相关的所有表和字段?
我知道我可以通过从 INFORMATION_SCHEMA 查询视图来提取此信息,但我不知道在哪里可以找到此信息。
谢谢
查看:
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
我在 sql server 组上找到了一些帮助我使用以下查询的答案,它在关系的一侧和多侧返回架构名称、表和字段名称:
SELECT
SchemaParent.name AS ParentSchemaName,
TableParent.name AS ParentTableName,
ColumnParent.name AS ParentColumnName,
SchemaChild.name AS ChildSchemaName,
TableChild.name AS ChildTableName,
ColumnChild.name AS ChildColumnName
FROM
sys.foreign_key_columns AS kc INNER JOIN
sys.objects AS TableChild ON kc.parent_object_id = TableChild.object_id INNER JOIN
sys.schemas AS SchemaChild ON TableChild.schema_id = SchemaChild.schema_id INNER JOIN
sys.objects AS TableParent ON kc.referenced_object_id = TableParent.object_id INNER JOIN
sys.schemas AS SchemaParent ON TableParent.schema_id = SchemaParent.schema_id INNER JOIN
sys.columns AS ColumnParent ON kc.referenced_object_id = ColumnParent.object_id AND kc.referenced_column_id = ColumnParent.column_id INNER JOIN
sys.columns AS ColumnChild ON kc.parent_object_id = ColumnChild.object_id AND kc.parent_column_id = ColumnChild.column_id
ORDER BY ParentTableName, ChildTableName