在 Liquibase 中添加复合唯一约束
Adding composite unique constraint in Liquibase
我正在创建一个有 3 列的 link table; id, product_id, tournament_id.
向 "id" 列添加一个 uniqueConstraint 是微不足道的,但我想确保任何一对 (product_id, tournament_id) 都是唯一的。
Liquibase.org 处的示例显示
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint catalogName="cat"
columnNames="id, name"
constraintName="const_name"
deferrable="true"
disabled="true"
initiallyDeferred="true"
schemaName="public"
tableName="person"
tablespace="A String"/>
</changeSet>
但是否可以在 <createTable>
块内完成此操作?
另外,确认一下;这会在两列上创建一个复合唯一约束,还是会创建两个单独的唯一约束?
我很确定:
- 您不能在 createTable 标记本身内执行此操作,但您可以 在与创建 table 时相同的变更集中执行此操作。
- 确实在两列上创建复合唯一约束。您可以检查的一种方法是 运行 liquibase 使用命令生成 SQL 用于更新,而不是 运行ning 更新命令并检查它对您的数据库做了什么。在命令行上,而不是 运行ning
liquibase update
你会 运行 liquibase updateSQL
.
你可以阅读 liquibase manual also similar problem you can find
在你的情况下应该是:
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint
columnNames="product_id, tournament_id"
constraintName="your_constraint_name"
tableName="person"
/>
</changeSet>
我正在创建一个有 3 列的 link table; id, product_id, tournament_id.
向 "id" 列添加一个 uniqueConstraint 是微不足道的,但我想确保任何一对 (product_id, tournament_id) 都是唯一的。
Liquibase.org 处的示例显示
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint catalogName="cat"
columnNames="id, name"
constraintName="const_name"
deferrable="true"
disabled="true"
initiallyDeferred="true"
schemaName="public"
tableName="person"
tablespace="A String"/>
</changeSet>
但是否可以在 <createTable>
块内完成此操作?
另外,确认一下;这会在两列上创建一个复合唯一约束,还是会创建两个单独的唯一约束?
我很确定:
- 您不能在 createTable 标记本身内执行此操作,但您可以 在与创建 table 时相同的变更集中执行此操作。
- 确实在两列上创建复合唯一约束。您可以检查的一种方法是 运行 liquibase 使用命令生成 SQL 用于更新,而不是 运行ning 更新命令并检查它对您的数据库做了什么。在命令行上,而不是 运行ning
liquibase update
你会 运行liquibase updateSQL
.
你可以阅读 liquibase manual also similar problem you can find
在你的情况下应该是:
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint
columnNames="product_id, tournament_id"
constraintName="your_constraint_name"
tableName="person"
/>
</changeSet>