如何使用 Liquibase 将最小/最大值约束添加到现有整数列?

问题描述 投票:0回答:1

这是我迄今为止尝试过的:

<changeSet id="1" author="nobody" context="x">
    <comment>Ensure rank is between 0 and 100 inclusive</comment>
    <sql>
        ALTER TABLE User ADD CONSTRAINT chk_your_column CHECK (rank BETWEEN 1 AND 100);

    </sql>

Liquibase 是否提供内置功能或标签来为整数列添加最小/最大值约束,或者使用原始 SQL 是唯一的选择?我在 Liquibase 文档中没有找到它。

  1. 如果Liquibase确实直接支持这一点,那么正确的实现方法是什么?
  2. 如果没有,是否有任何推荐的最佳实践或替代方法来使用 Liquibase 添加此类约束?

注意:使用3个数据库:mssql,mysql,oracle

liquibase liquibase-hibernate liquibase-sql
1个回答
0
投票

Liquibase 有

addCheckConstraint
标签,但仅 Liquibase Pro 支持。

这是来自 docs

的示例
<changeSet  author="liquibase-docs"  id="addCheckConstraint-example">
    <pro:addCheckConstraint  catalogName="cat"
        constraintName="const_name"
        disabled="true"
        schemaName="public"
        tableName="person"
        validate="true">A String</pro:addCheckConstraint>
</changeSet>

请注意,支持的数据库有:

DB2/LUW、DB2/z、MySQL 8.0、Oracle、PostgreSQL、SQL Server

如果您不使用 Liquibase Pro,那么我想您必须使用普通 SQL 来完成。

© www.soinside.com 2019 - 2024. All rights reserved.