如何在informix数据库中搜索列
Posted
技术标签:
【中文标题】如何在informix数据库中搜索列【英文标题】:How to search informix database for a column 【发布时间】:2012-07-30 13:13:06 【问题描述】:我希望能够在 Informix DB 中搜索列。在主表中有一个 cust_nbr 列,然后在未知数量的表中引用。
在 Informix 中,有没有办法查询 DB 并获取所有使用 cust_nbr 的表?
【问题讨论】:
【参考方案1】:SELECT tabname, colno, colname
FROM systables a, syscolumns b
WHERE a.tabid = b.tabid
and colname = "cust_nbr"
ORDER BY colno;
我在同一个地方找到了这段代码,并使用 colname = cust_nbr 添加了额外的限制。
这似乎对我有用。我会验证它,但所有迹象看起来都有效。
我在另一篇文章中提到的Using the Informix Catalogs 中发现
【讨论】:
【参考方案2】:你应该能够从system catalog tables,特别是sysreferences
获得这种类型的东西。取自Using the Informix System Catalog:
SELECT a.tabname, constrname, d.tabname
FROM systables a, sysconstraints b, sysreferences c,
systables d
WHERE b.constrtype = 'R'
AND a.tabid = b.tabid
AND b.constrid = c.constrid
AND c.ptabid = d.tabid
AND a.tabname = ?;
【讨论】:
所以当您发布此内容时,我正在查看文档。我应该把“cust_nbr”列放在哪里? 通过一些努力,可以识别包含给定列名的外键(这可能是两个表的两个 16 部分索引中的第 16 列;这就是辛苦了!),但它是间接的,并非所有列名的使用都需要受到这样的约束。从 SysTables 和 SysColumns 中直接选择要简单得多。以上是关于如何在informix数据库中搜索列的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ActiveRecord 访问隐藏列(在 Informix 中)
如何在 informix 中插入 blob 或 clob 列
如何通过 JDBC 显示 Informix sysprocedures.paramtypes 列?