2016-08-30 51 views
0

我想重新創建並使用其腳本文件讀取HSQL數據庫。在其中一個表中,我在一對列上有一個唯一約束。 某些數據行包含列之一的重複字段,但末尾有空格。例如:'Java'和'Java'
所以基本上它們形成兩個不同的數據集,但hsql報告**完整性約束違規**錯誤,這兩個數據集。

數據庫由使用HSQLDB的應用程序在內部形成,所以我無法修改腳本文件。 (儘管我試圖通過替換空格字符的unicode字符來進行測試,但它也不能正常工作。)

有沒有什麼辦法可以告訴hsqldb將帶空格的文本值視爲不同的數據集。
注意:我使用Java來訪問和讀取hsql數據庫,並且我通過HSQLDB的嵌入式swing GUI管理器測試了腳本文件,結果在兩種情況下都是相同的。唯一約束與hsqldb腳本文件衝突excortion(空間字符未讀取)

回答

2

有兩種選擇您的問題:

  • 列被聲明爲CHAR:在SGBD將與空間trailling空間墊,所以這兩個字符串將是平等的,你不能改變這一點。
  • 該列被聲明爲VARCHAR:默認情況下,HSQL將使用空格PAD填充最短的字符串以匹配第二個字符串的大小,然後進行比較。所以最後這兩個字符串在你的情況下是平等的。

對於案例二,您可以更改hsql的行爲。

看的文檔,特別是:SET數據庫歸類SQL_TEXT NO PAD

database collation