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

如何查询Firebird数据库所有检查约束及其约束条件?

查询Firebird所有检查约束及约束条件

要获取完整的检查约束信息,需要关联Firebird的几个系统表:RDB$RELATION_CONSTRAINTS(约束基本属性)、RDB$CHECK_CONSTRAINTS(存储检查约束的条件文本)和RDB$RELATIONS(表的元数据)。

以下是可直接使用的查询语句:

SELECT
    -- 用户表名称
    r.RDB$RELATION_NAME AS TABLE_NAME,
    -- 约束名称
    rc.RDB$CONSTRAINT_NAME AS CONSTRAINT_NAME,
    -- 约束条件(原始定义文本)
    cc.RDB$SOURCE AS CONSTRAINT_CONDITION
FROM
    RDB$RELATION_CONSTRAINTS rc
JOIN
    RDB$CHECK_CONSTRAINTS cc ON rc.RDB$CONSTRAINT_NAME = cc.RDB$CONSTRAINT_NAME
JOIN
    RDB$RELATIONS r ON rc.RDB$RELATION_NAME = r.RDB$RELATION_NAME
WHERE
    -- 只筛选检查约束
    rc.RDB$CONSTRAINT_TYPE = 'CHECK'
    -- 只显示用户创建的表(排除系统表)
    AND r.RDB$SYSTEM_FLAG = 0
ORDER BY
    TABLE_NAME, CONSTRAINT_NAME;

字段说明:

  • TABLE_NAME:约束所属的用户表名称
  • CONSTRAINT_NAME:检查约束的名称
  • CONSTRAINT_CONDITION:检查约束的具体条件(与创建约束时的表达式一致)

如果需要查看字段级的检查约束(直接定义在字段上的CHECK),可以使用以下查询补充字段信息:

SELECT
    r.RDB$RELATION_NAME AS TABLE_NAME,
    f.RDB$FIELD_NAME AS COLUMN_NAME,
    fc.RDB$CONSTRAINT_NAME AS CONSTRAINT_NAME,
    cc.RDB$SOURCE AS CONSTRAINT_CONDITION
FROM
    RDB$FIELD_CONSTRAINTS fc
JOIN
    RDB$CHECK_CONSTRAINTS cc ON fc.RDB$CONSTRAINT_NAME = cc.RDB$CONSTRAINT_NAME
JOIN
    RDB$RELATIONS r ON fc.RDB$RELATION_NAME = r.RDB$RELATION_NAME
JOIN
    RDB$FIELDS f ON fc.RDB$FIELD_NAME = f.RDB$FIELD_NAME
WHERE
    fc.RDB$CONSTRAINT_TYPE = 'CHECK'
    AND r.RDB$SYSTEM_FLAG = 0
ORDER BY
    TABLE_NAME, COLUMN_NAME;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:03