syscolumns 系统目录表描述数据库中的每个列。
对于在表或视图中定义的每一列,都会有一行存在。
列 | 类型 | 解释 |
---|---|---|
colname | VARCHAR(128) | 列名 |
tabid | INTEGER | 包含列的表的标识代码 |
colno | SMALLINT | 列号
系统按顺序指定此列号(在每个表中从左到右)。 |
coltype | SMALLINT | 指示该列的数据类型的代码:
|
collength | 任何以下数据类型:
|
值决定于列的数据类型。对于某些数据类型,值是列长(以字节为单位)。请参阅存储列长以获取更多信息。 |
colmin | INTEGER | 最小列长(以字节计) |
colmax | INTEGER | 最大列长(以字节计) |
extended_id | INTEGER | 在 coltype 列中指定的数据类型的数据类型代码(来自 sysxtdtypes 表) |
seclabelid | INTEGER | 安全标号的标号标识与该列相关联(如果该列为受保护的列)。否则,其标号标识为 NULL。 |
colattr | SMALLINT |
|
2 请参阅不透明数据类型以获取更多信息。
tabid 和 colno 列的组合索引只允许唯一值。
coltype 代码可通过显示列的以下特征的位图递增。
位值 | 设置位时的有效值 |
---|---|
0x0100 | 不允许使用 NULL 值 |
0x0200 | 值来自主变量 |
0x0400 | 用于联网的数据库服务器的点分十进制 |
0x0800 | DISTINCT 数据类型 |
0x1000 | 命名 ROW 类型 |
0x2000 | LVARCHAR 基本类型中的 DISTINCT 类型 |
0x4000 | BOOLEAN 基本类型中的 DISTINCT 类型 |
0x8000 | 在客户机系统上处理的集合 |
例如,命名行类型的 coltype 值 4118 是十六进制值 0x1016 的十进制表示法,该十六进制值与设置了命名行类型位的未命名行类型 0x016 的十六进制 coltype 值相同。文件 $GBASEDBTDIR/incl/esql/sqltypes.h 包含有关 syscolumns.coltype 代码的其他信息。
同样,如果列不允许使用 NULL 值,那么 coltype 值将增加 256。要确定这种列的数据类型,根据可能的 coltype 值,从值中减去 256 并求余数。例如,如果 coltype 值为 262,减去 256 得到余数 6,那么这表示列具有 SERIAL 数据类型。
数据库服务器将 coltype 值作为位图存储,如 SYSCOLUMNS 中列示的那样。