创建视图时的条件-liquibase.xml



我想做一些视图,但在第四列中有条件。

条件:如果epr.j_id不为null,则填充lj.id,但当epr.j_id为null时,则填充"NONE">

我在那里找到了一些条件标签,但我不知道如何使用它,或者可能还有其他方法。。。

<changeSet id="103" author="m">
<createView replaceIfExists="true"
schemaName="public"
viewName="report">
SELECT DISTINCT l.id,
l.name,
l.gis_ext_id AS gis_ext_id_line,
condition (epr.j_id is not null ),

来自上一个StackOverflow问题:如何将条件添加到changeSet

如果要根据特定条件更新列数据类型,可以将<preConditions><sqlCheck>,一起使用,然后使用<modifyDataType>.

因此,假设已经有一个名为TASK的表,并且它包含一个名称为STATUS的列,您可以修改它的数据类型,如下所示:

<changeSet id="1" author="xxx">
<comment>Update Asset table</comment>
<preConditions onFail="MARK_RAN">
<and>
<columnExists tableName="TASK" columnName="STATUS"/>
<sqlCheck expectedResult="0"> SELECT COUNT(*) FROM TASK WHERE STATUS = "pending";</sqlCheck>
</and>
</preConditions>
<modifyDataType tableName="TASK" columnName="STATUS" newDataType="VARCHAR(10)"/>
</changeSet>

或者你可能想要另一个onFail行为。查看此链接

  • HALT-立即停止执行整个更改日志[默认值]
  • 继续-跳过更改集。将在下次更新时再次尝试执行更改集。继续更改日志
  • MARK_RAN-跳过更改集,但将其标记为已运行。继续更改日志
  • WARN-输出警告并继续正常执行更改集

其他文档:

  • Liquibase:创建视图
  • Mohit Goyal:检查数据库状态并有条件地在Liquibase中应用更改

相关内容

  • 没有找到相关文章

最新更新