如果在 SQL Server 数据库中有 200 张表,我们如何知道 PK 和 FK 关系。是否有任何查询来进行检查。

24 浏览
0 Comments

如果在 SQL Server 数据库中有 200 张表,我们如何知道 PK 和 FK 关系。是否有任何查询来进行检查。

这个问题已经在这里有了答案:

如何在SQL Server中列出所有引用给定表的外键?

除了数据库架构图之外,有没有什么方法可以获取所有具有PK / FK关系的表的列表?

admin 更改状态以发布 2023年5月21日
0
0 Comments

最简单的方法是检查系统目录视图-例如,尝试使用以下方法:

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 系统目录视图文档了解更多信息

0