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

时间:2014-01-23 16:16:39

标签: oracle migration liquibase

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

<createIndex tableName="USER" indexName="IX_USER_TX_ID">
     <column name="TX_ID" />
</createIndex>

1 个答案:

答案 0 :(得分:3)

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

  1. 回退到您指定所需SQL的标记
  2. 使用modifySql tag附加到生成的SQL。
  3. 创建一个extension到createIndex,它始终在SQL结束时生成ONLINE,或者为createIndex添加一个参数,允许您控制是否添加它。
  4. 选项#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>
    

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