2017-03-01 40 views
0

我找不到任何解決方案,所以我要求你們幫忙。如何防止將重複項導入到HSQL DB?

,這樣重複檢查是以前做我如何延長這一說法:

"INSERT INTO sample_table(str_col,num_col) VALUES('Ford', 100)" 

非常感謝!

+0

先使用SELECT然後插入或更新 – Sanjeev

+1

或者更好地使用合併兩者的MERGE。或者創建一個唯一的約束,並在記錄存在時處理失敗。 – user2612030

+1

或使用[MERGE](http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_merge_statement)語句。 –

回答

0

您在需要包含唯一值的列上創建唯一索引。如果str_col中的值應該是唯一的,則需要對此列進行約束。

ALTER TABLE sample_table ADD CONSTRAINT unique_c UNIQUE(str_col) 

如果兩列的組合必須是唯一的,例如汽車(Ford,100),(福特,101),你應該添加

ALTER TABLE sample_table ADD CONSTRAINT unique_c UNIQUE(str_col, numb_col) 

當你插入重複值到表,拋出異常。

如果您想避免該異常,請使用MERGE語句插入。

MERGE INTO sample_table USING VALUES('Ford', 100) 
    WHEN NOT MATCHED THEN INSERT VALUES('Ford', 100) 
+0

非常感謝!第一個聲明正在工作。隨着第二個我得到一個異常:java.sql.SQLSyntaxErrorException:意外的令牌:100.3當我試圖插入「100.2」 – Andrew