如何使用 liquibase 在线创建索引?

Jak*_*son 2 migration oracle liquibase

我有一个迁移,它将在我们的 Oracle 数据库的表中创建一个索引。DBA 希望在线创建索引。(类似于CREATE INDEX ..... ONLINE;)是否可以在下面的标签中添加一些内容来完成我想要的操作,或者我是否需要将 SQL 写入迁移?

<createIndex tableName="USER" indexName="IX_USER_TX_ID">
     <column name="TX_ID" />
</createIndex>
Run Code Online (Sandbox Code Playgroud)

Nat*_*and 5

没有将其指定为 ONLINE 的标准标签。将其创建为 ONLINE 的 3 个选项是:

  1. 回退到您指定所需的确切 SQL 的标记
  2. 使用modifySql 标记附加到生成的 SQL。
  3. 为 createIndex创建一个扩展,它总是在 SQL 的末尾生成 ONLINE,或者向 createIndex 添加一个参数,允许您控制是否添加它。

选项#2 可能是简单而灵活的最佳组合,看起来像这样:

<changeSet id="1" author="nvoxland">
    <createIndex tableName="USER" indexName="IX_USER_TX_ID">
        <column name="TX_ID" />
    </createIndex>
    <modifySql dbms="oracle">
         <append value=" ONLINE"/>
    </modifySql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

注意值标签中的空格。Append 执行一个非常简单的文本追加,没有内置逻辑。