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

如何在H2数据库中查看表的字段是否为外键?

查看H2数据库中表字段是否为外键的方法

针对你已经创建的user(父表)和contact(子表,userId为外键)的场景,这里有几种实用的方法来验证字段的外键属性:

方法1:通过INFORMATION_SCHEMA系统表查询

H2和大多数关系型数据库一样,把元数据存储在系统表中,你可以通过SQL查询直接获取外键信息。

针对特定字段的精准查询

如果你想确认contact表的userId是否为外键,可以执行这条SQL:

SELECT 
    tc.CONSTRAINT_NAME,
    kcu.COLUMN_NAME,
    ccu.TABLE_NAME AS REFERENCED_TABLE,
    ccu.COLUMN_NAME AS REFERENCED_COLUMN
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
JOIN 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
    ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
JOIN 
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
    ON tc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
JOIN 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu
    ON rc.UNIQUE_CONSTRAINT_NAME = ccu.CONSTRAINT_NAME
WHERE 
    tc.CONSTRAINT_TYPE = 'FOREIGN KEY'
    AND kcu.TABLE_NAME = 'CONTACT'
    AND kcu.COLUMN_NAME = 'USERID';

如果查询返回结果,说明userId确实是外键,结果里还会显示它关联的父表(user)和对应字段(userId)。

查询所有外键信息

如果你想查看数据库中所有的外键关系,可以简化查询:

SELECT 
    tc.TABLE_NAME,
    kcu.COLUMN_NAME,
    ccu.TABLE_NAME AS REFERENCED_TABLE,
    ccu.COLUMN_NAME AS REFERENCED_COLUMN
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
JOIN 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
    ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
JOIN 
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
    ON tc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
JOIN 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu
    ON rc.UNIQUE_CONSTRAINT_NAME = ccu.CONSTRAINT_NAME
WHERE 
    tc.CONSTRAINT_TYPE = 'FOREIGN KEY';

方法2:通过H2控制台可视化查看

如果你用H2的Web控制台操作,步骤更直观:

  • 登录H2控制台,连接到你的数据库。
  • 在左侧的"Tables"列表中找到contact表,点击它的名称。
  • 在打开的表详情页面中,找到"Constraints"(约束)部分,这里会列出所有外键约束,你能看到userId对应的外键条目,以及它关联的父表信息。

这样两种方法都能帮你确认字段的外键属性,根据你的操作习惯选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:55:16