如何在Liquibase上创建部分索引。我想添加一个条件以创建索引,但这适用于数据的子集。
--------------
| Col1 | Col2 |
-------------
| 12 | 1 | Ok
| 12 | 1 | X
| 12 | 2 | Ok
| 12 | 2 | Ok
| 12 | 2 | Ok
-------------
在这种情况下,我不希望重复项,而只希望与Col2=1
匹配的行以及Col1
的某些值。虽然我想允许其他Col2值重复的值。
答案 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>