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が、それらのいずれかが動作しません。私のために。私はエラーを持っているひとつひとつの時間:
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>
しかし、それは動作しません。
チェックこの1:https://liquibase.jira.com/browse/CORE-2179と別の1:https://liquibase.jira.com/browseこのようになります。
/CORE-2107。関数ベースのインデックスを作成するサポートはないと確信していますか? – degath
@degath:ああ、感謝していませんでした。しかし、それはHSQLDBのアプローチを変更しません –
私はpostgresについての私の例のようにそれを行うことができるように見えるが、hsqldbのためのvarchar ignorecaseでそれを行う必要がまだありますか? – degath