我正在试图弄清楚如何以编程方式确定给定表的列是否可以在Informix数据库中为空。我已经弄清楚如何获取任何给定数据的列数据,但似乎这些结果对我的目的没有用;也就是说,似乎没有一个属性指示列是否接受null。
我是否需要加入另一个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中的东西......?
答案 0 :(得分:4)
上一页中列出的coltype
代码可以通过显示列的以下功能的位图递增。
Bit Value Significance When Bit Is Set 0x0100 NULL values are not allowed
然后在下一页:
类似地,如果列不允许NULL值,则coltype值增加256。要确定此类列的数据类型,请从值中减去256并根据可能的coltype值计算余数。例如,如果coltype值为262,则减去256会留下6的余数,表示该列具有SERIAL数据类型 的