用liquibase创建部分索引

时间:2019-10-08 19:20:38

标签: liquibase

如何在Liquibase上创建部分索引。我想添加一个条件以创建索引,但这适用于数据的子集。

--------------
| Col1 | Col2 |
-------------
| 12  |  1   | Ok
| 12  |  1   | X
| 12  |  2   | Ok
| 12  |  2   | Ok
| 12  |  2   | Ok
-------------

在这种情况下,我不希望重复项,而只希望与Col2=1匹配的行以及Col1的某些值。虽然我想允许其他Col2值重复的值。

1 个答案:

答案 0 :(得分:1)

由于Liquibase本身还没有此实现,因此我们可以通过这种方式包含它。另外,还取决于数据库是否支持部分索引。

<changeSet  author="some_author" id="someId"  context="some_context" dbms="some_db_key">
    <preConditions onFail="MARK_RAN">

        <columnExists tableName="some_table_name" columnName="Col1"/>

        <columnExists tableName="some_table_name" columnName="Col2"/>

    </preConditions>

    <sql splitStatements="true" stripComments="true" endDelimiter="\nGO">
        CREATE UNIQUE INDEX idx_unique_colName1_colName2 ON some_table_name (Col1, Col2)
        WHERE Col2 = '1'
    </sql>
</changeSet>