Liquibase使用函数创建索引

时间:2014-09-16 11:37:40

标签: mysql sql postgresql indexing liquibase

我在postgresql中有这个数据库,它有这个索引:

CREATE INDEX fav_alias_lower_index ON fav_alias USING hash((LOWER(fav_alias)));

当我逆转设计这个数据库时,我得到了这个liquibase changelog:

<changeSet author="jmartins (generated)" id="1410448831080-17">
   <createIndex indexName="workspace_favorite_alias_lower_case_index" tableName="workspace_favorite_alias" unique="false">
      <column name="lower((fava_alias)::text)"/>
   </createIndex>
</changeSet>

当我在PostgreSql数据库上应用更新时,这可以正常工作,但是,它在MySql上不起作用。所以我的问题是我如何才能为MySql,MSSQL和Oracle创建这个索引,保留fava_alias的小写?

由于

1 个答案:

答案 0 :(得分:3)

如果您的数据库中有该功能,您可以在liquibase中使用它。有一种方法可以使用dbms属性来区分不同的数据库。

<changeSet author="jmartins (generated)" id="1410448831080-17">
   <createIndex indexName="workspace_favorite_alias_lower_case_index" tableName="workspace_favorite_alias" unique="false" dbms="postgresql">
      <column name="lower((fava_alias)::text)"/>
   </createIndex>
</changeSet>

<changeSet author="jmartins (generated)" id="1410448831080-17">
   <createIndex indexName="workspace_favorite_alias_lower_case_index" tableName="workspace_favorite_alias" unique="false" dbms="oracle">
      <column name="lower(fava_alias)"/>
   </createIndex>
</changeSet>