2014-01-23 58 views
1

我有一個將在我們的Oracle數據庫的表中創建索引的遷移。 DBA希望在線創建索引。 (類似CREATE INDEX ..... ONLINE;)有什麼我可以添加到下面的標籤來完成我想要或我需要將SQL寫入遷移?如何使用liquibase在線創建索引?

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

回答

3

沒有標準標籤將其指定爲ONLINE。你的3個選項將其創建爲ONLINE是:

  1. 回落到你指定的SQL標籤你想
  2. 使用modifySql tag追加到生成的SQL。
  3. 創建一個extension來創建索引,該索引總是在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> 

請注意,在值標籤的空間。 Append做了一個非常簡單的文本追加,沒有內置邏輯。