hsqldb에서 함수 색인을 사용하는 방법이 있습니까? 내가 HSQLDB 얻은 것으로 나타났습니다 문서에서hsqldb/liquibase에서 함수로 고유 색인을 생성하십시오.
<changeSet author="dgt" id="unique-postgres" dbms="hsqldb">
<createIndex indexName="lower_case_index" tableName="users" unique="true">
<column name="LOWER(name)" computed="true"/>
</createIndex>
: 내 createIndex의 변경 집합 내부
<column name="LOWER(name)"/>
<column name="LCASE(name)"/>
<column name="LOWER(name)" computed="true"/>
<column name="LCASE(name)" computed="true"/>
:
나는 그 4를 시도 LOWER과 기능 내장 LCASE, 그러나 그 어떤 작동하지 않습니다 나를 위해.I에 오류가있어 매 시간 :
Reason: liquibase.exception.DatabaseException: unexpected token: ( required:) [Failed SQL: CREATE UNIQUE INDEX PUBLIC.lower_case_index ON PUBLIC.users(LOWER(name))]
내가 VARCHAR_IGNORECASE에 VARCHAR에서 열 유형을 변경할 수있는 솔루션에 대해 알고,하지만 난 솔루션을 필요로하기 때문에 그것이 나를 위해 그렇지 않다 db : hsqldb와 postgres 모두에서 작업 할 수 있습니다.
<changeSet author="dgt" id="users-unique-index-postgres" dbms="hsqldb">
<createIndex indexName="name_index" tableName="users" unique="true">
<column name="LOWER(name)" computed="true"/>
</createIndex>
</changeSet>
<changeSet author="dgt" id="users-unique-index-hsqldb" dbms="postgresql">
<createIndex indexName="name_index" tableName="users" unique="true">
<column name="lower(name)" computed="true"/>
</createIndex>
</changeSet>
을하지만 그것은 작동하지 않습니다
나의 이상적인 솔루션은 다음과 같이한다.
확인이 하나 https://liquibase.jira.com/browse/CORE-2179 다른 하나 https://liquibase.jira.com/browse/CORE-2107. 함수 기반 인덱스를 만들 수있는 지원이 없다고 확신합니까? – degath
@degath : 아, 감사합니다. 나는 그 사실을 몰랐습니다. 하지만 그것은 HSQLDB에 대한 접근 방식을 변경하지 않습니다 –
그래서 내가 할 수있는 것처럼 postgres에 대한 나의 예를 좋아하지만 hsqldb에 대한 varchar ignorecase와 함께 할 필요가 아직도? – degath