【问题标题】:Write sql server query to see how many tables are linked a table编写sql server查询查看一个表链接了多少表
【发布时间】:2018-04-12 12:56:08
【问题描述】:

如果有表格 Application、Person、Status 等...

Status 和 Person 有一个指向 Application 的链接。

是否可以编写一个简单的 sql 查询,该查询将给出链接到应用程序表的所有表的列表(与使用数据库图相反)。

应用预期结果:

  • 状态

请提供可行的解决方案(如果有)。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

使用 SP_depends。像 DMV 一样,还有其他方法。

sp_depends 'TableName'

【讨论】:

    【解决方案2】:

    假设您使用的是 MSSQL Server,那么您可以运行

    EXEC sp_fkeys 'YourTableName'
    

    否则你可以使用

    SELECT *
    FROM information_schema.referential_constraints
    WHERE table_name = <tablename>
    

    建立外键关系

    【讨论】:

      【解决方案3】:

      检查引用其他表的每个表名的另一种方法是:

      SELECT DISTINCT OBJECT_NAME(f.parent_object_id) AS TableName,
                      OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName
      FROM sys.foreign_keys AS f
                      INNER JOIN sys.foreign_key_columns AS fc 
                          ON f.OBJECT_ID = fc.constraint_object_id
                      INNER JOIN sys.objects AS o 
                          ON o.OBJECT_ID = fc.referenced_object_id
      

      当然,您可以添加更多条件来检查单个表,例如:

      WHERE OBJECT_NAME(f.referenced_object_id) = 'Application'   
      

      这应该会给你这样的结果:

      TableName  ReferenceTableName
      ---------- ------------------
      Status     Application
      Person     Application
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 2020-11-13
        • 1970-01-01
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        相关资源
        最近更新 更多