使用 Liquibase 时向表中的列添加检查约束有哪些选项?
我尝试过使用 Liquibase checkConstraint 属性,但它似乎不起作用,可能是因为它是 Liquibase Pro 更改类型。
<column name="age" type="INT" >
<constraints checkConstraint="CHECK (age >= 0 AND age <= 1000)"/>
</column>
我发现的另一个选择是使用标签来执行 ALTER TABLE 语句,但我担心与不同数据库的潜在兼容性问题。
<sql>
ALTER TABLE person_jn ADD CONSTRAINT check_age CHECK (age >=0 AND age <= 1000)
</sql>
是否有其他推荐的方法或最佳实践来向 Liquibase 中的列添加检查约束?
你是对的,检查约束更改仅适用于 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/