2017-12-21 4 views
1

많은 연구 끝에 HSQLDB에 대해 null 열로 고유 제약 조건을 처리하는 방법을 찾지 못했습니다.HSQLDB 및 고유 제한

이 질문은 직접 : Create unique constraint with null columns과 연결되어 있습니다.

관련 답변 (임시 해결책)은 PostgreSQL (create unique index ... where conditions)에서는 잘 작동하지만 (내 관점에서 볼 때) HSQLDB에는 문제가 없습니다.

이상적으로, 나는 PostgreSQL을 및 감사하겠습니다 널 열

어떤 도움, 아이디어 또는 해결 방법

와 고유 제한 동작을 관리 HSQLDB에 대해 같은 "create_ddl"스크립트를 가지고 싶습니다.

답변

1

HSQLDB에는 UNIQUE 제약 조건의 열 중 하나에서 null이있는 행 하나만 허용되는 설정이 있습니다. 이 명령문을 사용하여 기본 설정을 한 번 변경할 수 있습니다.

SET DATABASE SQL UNIQUE NULLS FALSE 

세 열에 UNIQUE 제약 조건을 만들면됩니다. 널 (NULL)은 고유 값으로 취급되며, 이들 중 하나가 널 (NULL) 일 때라도 3 열에서 동일한 값을 갖는 두 행을 허용하지 않습니다.

+0

고마워, 프레드! 그건 내 필요와 완전히 일치한다. 그건 그렇고, null 값 이외의 조건 (예 : ' = true')이있는 고유 한 제약 조건을 만들고 싶습니다. HSQLDB로 어떻게 성공할 수 있습니까? 이것에 대해 새로운 질문을 만들어야합니까? –

+0

무슨 뜻인지 모르겠다. 제약 조건 열에 (3, true) 및 (3, true)가있는 두 행에있는 경우 뚜렷하지 않으며 둘 다 삽입 될 수 없습니다. 별개의 값의 예를 작성하십시오. – fredt

+0

답변 해 주셔서 감사합니다. 행 (3, 거짓)을 여러 번 삽입하고 싶습니다만, 한 번만 삽입하고 싶습니다. 행 (3, true). PostgreSQL에서는 다음과 같이이 동작을 정의했습니다. CREATE UNIQUE INDEX pmd_unique_def_wlt_idx ON TABLE_A (COLUMN_ID, DEFAULT_USE) WHERE DEFAULT_USE = true; –