使用 liquibase 创建部分索引

create partial index with liquibase

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

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

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

由于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>