GBase 8s
运维管理
文章
精选

GBase 8S 主外键关系查询SQL及使用说明

发表于2025-10-24 10:51:4379次浏览3个评论

在GBase 8S数据库中,可以通过系统表查询表之间的主外键关系。以下SQL语句能够查询指定表的外键约束信息,包括外键名称、关联的表和字段等。

 

SELECT

    fc.constrname AS fk_name,

    ft.tabname AS fk_table,

    pt.tabname AS pk_table,

    wm_concat(fcol.colname) AS fk_column,

    wm_concat(pcol.colname) AS pk_column

FROM sysreferences r

JOIN sysconstraints fc ON fc.constrid = r.constrid

JOIN sysconstraints pc ON pc.constrid = r.primary

JOIN systables ft ON ft.tabid = fc.tabid

JOIN systables pt ON pt.tabid = r.ptabid

JOIN sysindexes fi ON fi.idxname = fc.idxname

JOIN sysindexes pi ON pi.idxname = pc.idxname

JOIN syscolumns fcol ON fcol.tabid = ft.tabid

JOIN syscolumns pcol ON pcol.tabid = pt.tabid

WHERE fc.constrtype = 'R'

  AND ft.tabname = 'employee'  --修改成实际表名,删除此条件就是全部系统相关的信息

  AND (

      (fi.part1 = fcol.colno AND pi.part1 = pcol.colno) OR

      (fi.part2 = fcol.colno AND pi.part2 = pcol.colno) OR

      (fi.part3 = fcol.colno AND pi.part3 = pcol.colno) OR

      (fi.part4 = fcol.colno AND pi.part4 = pcol.colno) OR

      (fi.part5 = fcol.colno AND pi.part5 = pcol.colno) OR

      (fi.part6 = fcol.colno AND pi.part6 = pcol.colno) OR

      (fi.part7 = fcol.colno AND pi.part7 = pcol.colno) OR

      (fi.part8 = fcol.colno AND pi.part8 = pcol.colno)

  )

  GROUP BY

        fc.constrname ,

    ft.tabname ,

    pt.tabname ;

使用说明

主要功能

  • 查询指定表的外键约束信息

  • 显示外键名称、外键表、主键表以及对应的字段

  • 使用wm_concat函数将复合外键的多个字段合并显示

参数说明

  • fk_name: 外键约束名称

  • fk_table: 外键表名(包含外键的表)

  • pk_table: 主键表名(被引用的表)

  • fk_column: 外键字段

  • pk_column: 主键字段

使用提示

  1. ft.tabname = 'employee'中的employee替换为你要查询的实际表名

  2. 如果删除该条件,将查询系统中所有的主外键关系

  3. 该SQL支持复合外键(多字段外键)的查询

注意事项

  • 确保对系统表有适当的查询权限

评论

登录后才可以发表评论
冰凤发表于 5个月前
学习下
崔哥发表于 1个月前
千点寒梅晓角中,一番春信画楼东。收灯庭院迟迟月,落索秋千翦翦风。鱼雁杳,水云重,异乡节序恨匆匆。当歌幸有金陵子,翠斝清尊莫放空。
流泪猫猫头发表于 7小时前
学习了