使用 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>
如何在 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>