Interbase Domain Modification



在IB(测试XE7和IB 2017)中遇到一个问题,当将域定义的大小从VarChar(6)更改为VarChar(10)时。最终结果是使用域的字段最终允许比指定大小多2个字符(在本例中为12个)。

下面是复制的步骤:
  1. 创建新的IB数据库
  2. 创建类型为VarChar(6)的域定义
  3. 添加新表testtable;使用以下新字段:TestPK整数,非空,主键TestDomainField <——使用上面步骤中的域定义
  4. 测试表项到新表。它将允许最多6个字符(正确)
  5. 将域定义更改为VarChar(10)
  6. 表中的测试项。它将允许12个字符而不是域上指定的10个字符(不正确)

元数据选择也确认允许的12个字符:

SELECT distinct rdb $FIELD_NAME AS FIELD_NAMEf.RDB$FIELD_LENGTH作为FIELD_LENGTH从RDB$RELATION_FIELDS左连接RDB$FIELD_SOURCE = f.RDB$FIELD_NAMEr.RDB RELATION_NAME美元= ' TestTable '

虽然我不知道这里到底发生了什么,但我的预感是某种字符集问题。有些字符集允许多字节字符。所以,你可以尝试在你的域名定义中添加一个字符集,看看这是否有什么不同。

最新更新