创建表时,PSQL v9中的记录长度如何受到影响?

时间:2016-08-05 14:09:04

标签: pervasive pervasive-sql btrieve

我正在使用Btrieve和Pervasive SQL Control Center来创建表。该表有3列:char 20,char 20,& char 50.第一列是主键。当我通过代码插入记录时,第二列的第一个字符总是丢失。我假设因为第一列覆盖了它。在调查我为什么加载文件信息编辑器。文件规范将记录长度列为92.这对我没有意义,因为我清楚地将表定义为记录长度为90.

我也得到错误22,这表示我的缓冲区在代码中的记录长度和实际的表记录长度不同。

要修复第二列中缺少的第一个字符,我在代码中更改了缓冲区,因此第一列的长度为21个字符。我还将第3列更改为51以修复错误22。

当我在创建表格时将记录长度明确定义为90时,如何在我的示例中将记录长度设置为92?

1 个答案:

答案 0 :(得分:1)

您最有可能看到的是Btrieve / Pervasive中“空”处理的工件 使用Btrieve创建文件时,可以逐字节地布局记录。当Pervasive引擎添加“True Null”支持时,任何创建为可空的列(默认值)都会在Btrieve文件中为字段添加前缀。这允许引擎知道字段是空还是空字符串 因为你的表有三列,所以应该有三个额外的字节,但因为其中一列是主键,所以它不是全为空,所以你只有两个额外的字节。
在您的情况下,如果您有一个现有的Btrieve文件并创建了SQL定义,那么在某些情况下这些额外的字段将不存在。
您有两种选择:

  • 重新启动“True Null”支持的表格。这是通过在Set TrueNullCreate = Off命令之前发出Create Table命令来完成的。

  • Not Null添加到表中的所有列并重新创建表。