3

我试图弄清楚如何以编程方式确定给定表的列在 Informix 数据库中是否可以为空。我已经弄清楚如何获取任何给定数据的列数据,但这些结果似乎对我的目的没有用;也就是说,似乎没有一个属性可以指示该列是否接受空值。

我是否需要加入另一个 sys__或类似的东西?

我目前正在使用的查询:

SELECT *
FROM "informix".syscolumns
WHERE tabid = (SELECT tabid FROM "informix".systables WHERE tabname = 'myTable');

这将返回一个包含 colname、tabid、colno、coltype、collength、colmin、colmax、extended_id、seclabelid 和 colattr 的表。也许可为空的属性是 coltype 中的东西......?

4

1 回答 1

4

从手册中引用:

coltype上一页列出的代码可以通过显示该列以下特征的位图递增。

设置位时的位值意义
0x0100 NULL 值是不允许的

然后在下一页:

同样,如果列不允许 NULL 值,则 coltype 值增加 256。要确定此类列的数据类型,请从值中减去 256,然后根据可能的 coltype 值计算余数。例如,如果 coltype 值为 262,则减去 256 得到余数 6,表示该列具有 SERIAL 数据类型

于 2012-12-09T18:13:18.090 回答