我正在尝试使用其脚本文件重新创建和读取HSQL数据库 . 在其中一个表中,我在一对列上有 Unique Constraint . 某些数据行包含其中一个列的重复字段,但末尾有一个空格 . 例如:'Java'和'Java '
所以基本上他们形成了两个不同的数据集,但是hsql报告了这两个数据集的完整性约束违规错误 .
数据库是由使用HSQLDB的应用程序在内部构成的,所以我也可以't modify the script file. (Although I tried to test by replacing unicode character for space character and it didn'工作 . )
有没有办法告诉hsqldb将空格的文本值视为不同的数据集 .
注意:我使用Java访问和读取hsql数据库,并且我通过HSQLDB的嵌入式swing GUI管理器测试了脚本文件,结果在两种情况下都是相同的 .
1 回答
您的问题有两种选择:
该列被声明为CHAR:SGBD将使用空格填充trailling空间,因此两个String将相等,您无法更改它 .
该列声明为VARCHAR:默认情况下,HSQL将使用空格PAD填充最短的String以匹配第二个String的大小,然后进行比较 . 所以最后两个字符串在你的情况下是相等的 .
但是,对于第二种情况,您可以更改hsql的行为 .
看一下doc,特别是:SET DATABASE COLLATION SQL_TEXT NO PAD
database collation