如何解决Liquibase唯一constarint不适用于名为“名称”的列,但适用于任何其他列
我想使两列唯一,并且我用两个 addUniqueConstraint's 原因创建了更改列表,当我尝试在一个 addUniqueConstraint columnNames 部分中列出所需的列时,它没有用
因此,我为“ setSpec”列指定了addUniqueConstraint,为“ name”列指定了第二个,但是约束仅适用于“ setSpec”列,并且我仍然可以插入具有重复名称值的实体。另外,我尝试将列从“名称”重命名为“ set_name”,但是行为却保持不变。
所以现在我对使两个列都唯一感到困惑。 Anybady可以提出解决方案还是指出我的错误原因,因为我不认为这么大的库可能有这么简单的缺陷。谢谢。但这是一件有趣的事情,当我只留下一个addUniqueConstraint节时,任何指定的列都将获得约束。
这是我的桌子:
<changeSet id="2020-07-07--16-00-create-set-table" author="Illia daliek">
<createTable tableName="set">
<column name="id" type="uuid">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="description" type="varchar(1024)"/>
<column name="setSpec" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="created_by_user_id" type="uuid"/>
<column name="created_date" type="timestamptz"/>
<column name="updated_by_user_id" type="uuid"/>
<column name="updated_date" type="timestamptz"/>
</createTable>
</changeSet>
<changeSet id="rename-column" author="Illia daliek">
<renameColumn tableName="set" oldColumnName="name" newColumnName="set_name"/>
</changeSet>
<!--this one works fine-->
<changeSet id="2020-08-28--11-00-add-unique-constraint-to-set.set_spec-column " author="Illia daliek">
<addUniqueConstraint columnNames="setSpec"
constraintName="unique"
schemaName="${database.defaultSchemaName}"
tableName="set"/>
</changeSet>
<!--this one doesn't work-->
<changeSet id="2020-08-28--11-00-add-unique-constraint-to-set.name-column " author="Illia daliek">
<addUniqueConstraint columnNames="set_name"
constraintName="unique"
schemaName="${database.defaultSchemaName}"
tableName="set"/>
</changeSet>
解决方法
将另一个constraintName
赋予第二个约束。我认为您不能在桌子上有两个名称相同的约束
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。