如果在 SQL Server 数据库中有 200 张表,我们如何知道 PK 和 FK 关系。是否有任何查询来进行检查。
如果在 SQL Server 数据库中有 200 张表,我们如何知道 PK 和 FK 关系。是否有任何查询来进行检查。
这个问题已经在这里有了答案:
除了数据库架构图之外,有没有什么方法可以获取所有具有PK / FK关系的表的列表?
admin 更改状态以发布 2023年5月21日
最简单的方法是检查系统目录视图-例如,尝试使用以下方法:
SELECT BaseTable = t.name, ForeignKeyConstraint = fk.name, ReferencedTable = ref.name FROM sys.tables t INNER JOIN sys.foreign_keys fk ON fk.parent_object_id = t.object_id INNER JOIN sys.tables ref ON fk.referenced_object_id = ref.object_id
这将列出“基本”表,外键约束的名称和参考表的名称-例如来自AdventureWorks
样本数据库的表:
BaseTable | ForeignKeyConstraint | ReferencedTable |
---|---|---|
SalesTerritoryHistory | FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID | SalesPerson |
Store | FK_Store_SalesPerson_SalesPersonID | SalesPerson |
SalesOrderHeader | FK_SalesOrderHeader_SalesPerson_SalesPersonID | SalesPerson |
SalesPersonQuotaHistory | FK_SalesPersonQuotaHistory_SalesPerson_BusinessEntityID | SalesPerson |
ProductModelIllustration | FK_ProductModelIllustration_Illustration_IllustrationID | Illustration |
WorkOrderRouting | FK_WorkOrderRouting_Location_LocationID | Location |
ProductInventory | FK_ProductInventory_Location_LocationID | Location |
(等等)
您可以通过进一步检查这些外键约束中涉及的列来扩展此功能-请参阅官方的 MS 系统目录视图文档了解更多信息