我有一个迁移将在我们的 Oracle 数据库的表中创建一个索引。 DBA 希望联机创建索引。 (类似于 CREATE INDEX ..... ONLINE;
)我可以在下面的标签中添加什么来完成我想要的或者我是否需要将 SQL 写入迁移?
<createIndex tableName="USER" indexName="IX_USER_TX_ID">
<column name="TX_ID" />
</createIndex>
最佳答案
没有标准标签将其指定为 ONLINE。在线创建它的 3 个选项是:
- 回退到您指定所需的确切 SQL 的标记
- 使用modifySql tag附加到生成的 SQL。
- 创建一个 extension到总是在 SQL 末尾生成 ONLINE 的 createIndex,或者向 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 执行非常简单的文本追加,没有内置逻辑。
关于oracle - 如何使用 liquibase 在线创建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313660/