使用 liquibase 创建检查约束

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

使用 Liquibase 时向表中的列添加检查约束有哪些选项?

我尝试过使用 Liquibase checkConstraint 属性,但它似乎不起作用,可能是因为它是 Liquibase Pro 更改类型。

<column name="age" type="INT" >
    <constraints checkConstraint="CHECK (age &gt;= 0 AND age &lt;= 1000)"/>
</column>

我发现的另一个选择是使用标签来执行 ALTER TABLE 语句,但我担心与不同数据库的潜在兼容性问题。

<sql>
    ALTER TABLE person_jn ADD CONSTRAINT check_age CHECK (age &gt;=0 AND age &lt;= 1000)
</sql>

是否有其他推荐的方法或最佳实践来向 Liquibase 中的列添加检查约束?

database constraints liquibase check-constraints
1个回答
0
投票

你是对的,检查约束更改仅适用于 LiquibasePro。

您可以使用

<sql>
更改并以纯 SQL 方式添加它。

如果您担心兼容性问题,您可以随时使用changeSet的

dbms
属性,它允许您为不同的数据库创建不同的changeSet。

例如:

<changeSet id="foo-1" author="bar" dbms="mysql">
    <!-- preConditions -->
    <sql>
        <!-- SQL for MySQL -->
    </sql>
</changeSet>

<changeSet id="foo-2" author="bar" dbms="postgresql">
    <!-- preConditions -->
    <sql>
        <!-- SQL for Postgres -->
    </sql>
</changeSet>

来自变更集文档

dbms(可选)- 指定变更集要用于哪种数据库类型。请参阅 Liquibase 数据库教程上的有效数据库类型名称。用逗号分隔多个数据库。通过添加前缀 ! 来指定变更集不适用于特定数据库类型。关键字 all 和 none 也可用。

以下是支持的数据库列表:

https://docs.liquibase.com/start/tutorials/home.html

https://contribute.liquibase.com/extensions-integrations/directory/database-tutorials/

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