создать частичный индекс с ликвидазой - PullRequest
0 голосов
/ 08 октября 2019

Как создать Частичные индексы на Liquibase. Я хочу добавить условие для создания индекса, но оно применяется к подмножеству данных.

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

В этом сценарии я не хочу дублировать элементы, а только для строк, которые соответствуют Col2=1 и некоторое значение для Col1. Хотя я хочу разрешить дублирование значений для других значений Col2.

1 Ответ

1 голос
/ 08 октября 2019

Поскольку 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>
...