PostgreSQL检查Liquibase中的约束

Bra*_*son 4 postgresql liquibase

我想在PostgreSQL数据库表的Liquibase中创建一个检查约束,用于遵循此逻辑的整数数据类型列:

int_value >= 0 AND int_value <= 6
Run Code Online (Sandbox Code Playgroud)

实现这一目标的正确XML请求是什么?

Con*_*ine 6

这应该是这样的:

     <column name="int_value" type="INT" >
        <constraints checkConstraint="CHECK (int_value &gt;= 0 AND int_value &lt;= 6)"/>
    </column>
Run Code Online (Sandbox Code Playgroud)

但是,目前的Liquibase(3.5.1)忽略了checkConstraint属性.有一个拉取请求,但它仅添加到4.0里程碑.

因此,我们必须暂时使用原始sql进行检查约束.这对我有用:

<createTable tableName="test">
     <column name="int_value" type="INT"/>
</createTable>
<sql>
    ALTER TABLE test ADD CONSTRAINT int_check CHECK (int_value &gt;=0 AND int_value &lt;= 6)
</sql>
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是“checkConstraint”属性仍然不起作用。我正在使用 liquibase 版本 4.4.3。 (4认同)
  • **更新**尽管文档中明确说明了它的作用,但到 2023 年仍然不起作用。[提到的 PR](https://github.com/liquibase/liquibase/pull/374/files) 现已关闭且未合并。*将 Liquibase 与 Spring Boot Kotlin 结合使用 `"org.liquibase:liquibase-core:4.17.2` (2认同)

Bra*_*son 2

<sql endDelimiter="\nGO">
  ALTER TABLE table_name ADD CONSTRAINT check_name CHECK (int_value &gt;=0 AND int_value &lt;= 6)
</sql>
Run Code Online (Sandbox Code Playgroud)