【问题标题】:SQL database view all foreign keysSQL数据库查看所有外键
【发布时间】:2020-09-19 13:05:42
【问题描述】:

我正在尝试查看我的数据库的所有外键,我有以下代码可以做到这一点:

SELECT 
  tc.TABLE_NAME,
  sc.COLUMN_NAME,
  CONSTRAINT_NAME,
  CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tc
inner join INFORMATION_SCHEMA.COLUMNS as sc
on sc.TABLE_NAME = tc.TABLE_NAME
order by tc.TABLE_NAME

但它似乎提供了比应有的更多结果。它给出了大约 30.000 个结果,应该不超过 2000 个。我做错了什么。 PS:我需要这个来返回表名、列名、列ID和约束类型,以便在Laravel应用程序中进一步实现。

【问题讨论】:

标签: php sql sql-server laravel


【解决方案1】:

我认为这里最好的选择是使用EXEC sp_fkeys 'TableName'。更多详情请查看这里

check this question

【讨论】:

    【解决方案2】:

    尝试添加“where CONSTRAINT_TYPE = 'FOREIGN KEY'”:

    SELECT 
    tc.TABLE_NAME,
    sc.COLUMN_NAME,
    CONSTRAINT_NAME,
    CONSTRAINT_TYPE
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tc
    inner join INFORMATION_SCHEMA.COLUMNS as sc
    on sc.TABLE_NAME = tc.TABLE_NAME
    where CONSTRAINT_TYPE = 'FOREIGN KEY'
    order by tc.TABLE_NAME;
    

    【讨论】:

    • 这只是原始查询的问题之一。因为表的所有列都已连接,而不仅仅是 FK 列。应使用表 sys.foreign_key_columns。
    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多