java - Liquibase 在不知道名称的情况下删除约束

标签 java sql constraints h2 liquibase

我们使用 liquibase 来跟踪我们的数据库更改.. 第一个 changeSet 包含这些行:

<column name="SHORT_ID" type="INTEGER">
   <constraints unique="true" />
</column>

基本上这意味着 SHORT_ID 列具有唯一约束,但此约束的名称可以是任何名称并且通常每次都不同(我们针对 H2 数据库运行一些集成测试,并且每次运行测试时都会创建新的基础)

所以.. 问题是:我无法更改第一个 changeSet 但现在我们必须摆脱这个唯一约束。任何想法如何通过使用 liquibase 来实现?

最佳答案

Liquibase 提供了一种在不知道约束名称的情况下删除非空约束的实现。当问这个问题时它可能不存在(我意识到它已经很老了)。

dropNotNullConstraint

<dropNotNullConstraint catalogName="cat"
            columnDataType="int"
            columnName="id"
            schemaName="public"
            tableName="person"/>

A dropUniqueConstraint存在,但您可能已经知道它,因为它需要约束名称。

关于java - Liquibase 在不知道名称的情况下删除约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3618234/

相关文章:

java - 如何在接口(interface)更改时最小化要修改的类数

java - Android 在 getActiveNetworkInfo() 上崩溃

mysql - 查询返回与特定列中的许多值关联的行

Android SQL - 记事本教程

ios - 使用代码更改约束常量

oracle - Oracle中检查约束操作中的DDL日期数据类型

java - 调用被覆盖的基类的方法

java - 获取 java.io.FileNotFoundException(访问被拒绝)

sql - 如何解决 ORA-00937 : not a single-group group function when calculating percentage?

ios - 以编程方式删除/添加约束动画