我的数据库中有一个汽车表,列model_name
。
我需要在model_name
列上添加唯一约束,但是其中有很多重复的值。
这就是为什么如果我尝试<addUniqueConstraint>
,我的changeSet
会失败的原因。那么,有什么方法可以在添加唯一约束之前删除所有重复项?
感谢您的帮助。
答案 0 :(得分:0)
根据liquibase official documentation,开箱即用是不可能的。
您可以使用<sql>
标签删除所有重复项,然后使用<addUniqueConstraint>
。
E.G。:
<changeSet author="changeset-author" id="changeset-id">
<preConditions onFail="MARK_RAN">
<columnExists tableName="cars" columnName="model_name"/>
</preConditions>
<sql>
DELETE c1 FROM cars c1, cars c2 WHERE c1.id > c2.id AND c1.model_name = c2.model_name;
</sql>
<addUniqueConstraint tableName="cars" columnNames="model_name" constraintName="cars_model_name_unique"/>
</changeSet>