You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询引用指定表主键的所有外键列及所属表

查询引用指定主键的关联表及外键列

不同数据库存储外键元数据的系统表结构不同,直接执行对应数据库的SQL语句,就能得到符合格式要求的结果。


MySQL

将语句里的占位符替换为实际的库名、主键表名、主键列名后执行:

SELECT
    CONCAT(kcu.COLUMN_NAME, ', ', kcu.TABLE_NAME)
FROM information_schema.KEY_COLUMN_USAGE kcu
WHERE
    kcu.REFERENCED_TABLE_SCHEMA = '替换为你的数据库名'
    AND kcu.REFERENCED_TABLE_NAME = '替换为主键所在表名(即示例中的table 1)'
    AND kcu.REFERENCED_COLUMN_NAME = '替换为目标主键列名(即示例中的列A)'
ORDER BY kcu.TABLE_NAME;

针对示例场景,执行后返回结果如下:

B, table 2

C, table 3

PostgreSQL

替换对应占位符后执行:

SELECT
    CONCAT(kcu.column_name, ', ', kcu.table_name)
FROM information_schema.key_column_usage kcu
WHERE
    kcu.table_catalog = '替换为你的数据库名'
    AND kcu.referenced_table_name = '替换为主键所在表名'
    AND kcu.referenced_column_name = '替换为目标主键列名'
ORDER BY kcu.table_name;

SQL Server

替换对应占位符后执行:

SELECT
    CONCAT(fk_cols.name, ', ', fk_tables.name)
FROM sys.foreign_keys fk
INNER JOIN sys.tables pk_tables ON fk.referenced_object_id = pk_tables.object_id
INNER JOIN sys.foreign_key_columns fk_cols_ref ON fk.object_id = fk_cols_ref.constraint_object_id
INNER JOIN sys.columns fk_cols ON fk_cols_ref.parent_object_id = fk_cols.object_id AND fk_cols_ref.parent_column_id = fk_cols.column_id
INNER JOIN sys.tables fk_tables ON fk.parent_object_id = fk_tables.object_id
INNER JOIN sys.columns pk_cols ON fk_cols_ref.referenced_object_id = pk_cols.object_id AND fk_cols_ref.referenced_column_id = pk_cols.column_id
WHERE
    pk_tables.name = '替换为主键所在表名'
    AND pk_cols.name = '替换为目标主键列名'
ORDER BY fk_tables.name;

注意:执行账号需要有对应系统表的查询权限,否则会返回空结果。

内容的提问来源于stack exchange,提问作者Vaish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 04:54:24