如何为唯一索引添加前提条件?

时间:2015-12-08 15:21:29

标签: mysql liquibase

我想要做的是;如果有一个名为" message_id"的索引(非唯一);然后删除它并创建一个具有相同名称的唯一索引。

以下代码不检查唯一性。有没有办法做到这一点?

顺便说一句,我可以写一个" sqlcheck"声明,但我需要找到一种方法来获得" message_id"索引与mysql查询的唯一性。

<changeSet author="mark" id="201589895236">
    <preConditions onFail="MARK_RAN">
        <indexExists schemaName="${database.name}" indexName="message_id"/>            
    </preConditions>
    <comment>comment for message_id index</comment>        
    <createIndex indexName="message_id" tableName="user_info" unique="true">
        <column name="message_id"/>
        <column name="message_prefix"/>
    </createIndex>
</changeSet>

1 个答案:

答案 0 :(得分:2)

看起来不可能,与此相关的任何内容都不在此处:https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/precondition/core/IndexExistsPrecondition.java 因此,您应该使用SQL检查或实现自己的自定义前置条件。