首页 文章

使用hsqldb脚本文件的唯一约束违例激活(不读取空格字符)

提问于
浏览
0

我正在尝试使用其脚本文件重新创建和读取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 回答

  • 2

    您的问题有两种选择:

    • 该列被声明为CHAR:SGBD将使用空格填充trailling空间,因此两个String将相等,您无法更改它 .

    • 该列声明为VARCHAR:默认情况下,HSQL将使用空格PAD填充最短的String以匹配第二个String的大小,然后进行比较 . 所以最后两个字符串在你的情况下是相等的 .

    但是,对于第二种情况,您可以更改hsql的行为 .

    看一下doc,特别是:SET DATABASE COLLATION SQL_TEXT NO PAD

    database collation

相关问题