如何为唯一索引添加前提条件?
How to add precondition for unique index?
我想做的是;如果有一个名为 "message_id" 的索引(非唯一),则删除它并创建一个具有相同名称的唯一索引。
以下代码不检查唯一性。有办法吗?
顺便说一句,我可以写一个 "sqlcheck" 语句,但我需要找到一种方法来通过 mysql 查询获得 "message_id" 索引的唯一性。
<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>
看起来不可能,这里没有与唯一性相关的内容:https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/precondition/core/IndexExistsPrecondition.java
所以你应该使用 SQL 检查或实现你自己的自定义前提条件。
我想做的是;如果有一个名为 "message_id" 的索引(非唯一),则删除它并创建一个具有相同名称的唯一索引。
以下代码不检查唯一性。有办法吗?
顺便说一句,我可以写一个 "sqlcheck" 语句,但我需要找到一种方法来通过 mysql 查询获得 "message_id" 索引的唯一性。
<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>
看起来不可能,这里没有与唯一性相关的内容:https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/precondition/core/IndexExistsPrecondition.java 所以你应该使用 SQL 检查或实现你自己的自定义前提条件。