Liquibase 唯一约束不适用于名为 'name' 的列,但适用于任何其他列
Liquibase unique constarint is not applied for a column named 'name' but works for any other columns
我想让两列唯一,并且我创建了包含两个 addUniqueConstraint's 的更改列表,因为当我尝试在一个 addUniqueConstraint columnNames[=25 中列出所需的列时=] 部分无效。
因此,我为“setSpec”列指定了 addUniqueConstraint,为“name”列指定了第二个,但约束仅适用于“setSpec”列,我仍然可以插入具有重复名称值的实体。我还尝试将列从“名称”重命名为“set_name”,但行为保持不变。
所以现在我对让两列都独一无二感到困惑。任何人都可以提出解决方案或者指出我的错误,因为我认为这么大的图书馆不会有这么简单的缺陷。谢谢你。但这是一件有趣的事情,当我只留下一个 addUniqueConstraint 部分时,指定列中的任何一个都会获得约束。
这是我的 table:
<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
。我不认为你可以在 table
上有两个具有相同名称的约束
我想让两列唯一,并且我创建了包含两个 addUniqueConstraint's 的更改列表,因为当我尝试在一个 addUniqueConstraint columnNames[=25 中列出所需的列时=] 部分无效。
因此,我为“setSpec”列指定了 addUniqueConstraint,为“name”列指定了第二个,但约束仅适用于“setSpec”列,我仍然可以插入具有重复名称值的实体。我还尝试将列从“名称”重命名为“set_name”,但行为保持不变。
所以现在我对让两列都独一无二感到困惑。任何人都可以提出解决方案或者指出我的错误,因为我认为这么大的图书馆不会有这么简单的缺陷。谢谢你。但这是一件有趣的事情,当我只留下一个 addUniqueConstraint 部分时,指定列中的任何一个都会获得约束。
这是我的 table:
<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
。我不认为你可以在 table