2017-03-01 2 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

고유 값을 포함해야하는 열에 UNIQUE 인덱스를 만듭니다. str_col의 값이 고유해야하면이 열에 대한 제한 조건이 필요합니다. 두 컬럼의 조합이 예를 들어, (포드, 100) 고유해야하는 경우

ALTER TABLE sample_table ADD CONSTRAINT unique_c UNIQUE(str_col) 

(포드, 101) 당신은 테이블에

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

당신이 삽입 중복 값을 추가해야합니다 예외가 throw됩니다.

예외를 피하려면 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

관련 문제