如何在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 列

将数据插入 Informix 中的 TEXT 类型列

如何通过 JDBC 显示 Informix sysprocedures.paramtypes 列?

在 Hibernate 中为 Informix 数据库中的列进行类型转换

如何从 Informix 中的 syscolumns 检索“Is Null Allowed”属性?