我试图弄清楚如何以编程方式确定给定表的列在 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... 中的东西?

最佳答案

引用 from the manual :

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

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

然后在下一页:

类似地,如果列不允许 NULL 值,则 coltype 值会增加 256。要确定此类列的数据类型,请从值中减去 256 并根据可能的 coltype 值计算余数。例如coltype值为262,减去256余数为6,表示该列是SERIAL数据类型

关于sql - 如何从 Informix 中的 syscolumns 检索 "Is Null Allowed"属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13790151/

10-12 14:01