【问题标题】:Liquibase execution order of changes inside of changeSetchangeSet 内部更改的 Liquibase 执行顺序
【发布时间】:2018-12-07 01:46:03
【问题描述】:

我们正在使用 liquibase 将一列拆分为两列。这发生在三个变化中:

  1. 通过 addColumn 添加新列
  2. 通过 customChange 将旧列中的数据插入新列
  3. 通过 dropColumn 删除旧列

这很好用,但我找不到任何关于 更改 执行顺序的文档。 我只找到了关于 changeSets 执行顺序的文档,请参阅here

liquibase 是否保证更改按照它们出现的顺序依次执行?

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    我从未见过任何有关它的文档,但根据我的经验 - 它确实按照它们出现的顺序在 changeSet 中执行更改。

    另外,我认为将上述所有更改放在一个 changeSet 中并不是一个好习惯,因为正如您提供的文档中所述:

    Liquibase 尝试在最后提交的事务中执行每个 changeSet,如果出现错误则回滚。某些数据库会自动提交语句,这会干扰此事务设置并可能导致意外的数据库状态。因此,通常最好每个 changeSet 只进行一次更改,除非您希望将一组非自动提交更改应用为事务,例如插入数据。

    我建议用适当的preConditions 将你的changeSet 分成三个原子的,或者为它创建一个适当的rollback

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2012-01-04
      • 2015-10-09
      • 1970-01-01
      相关资源
      最近更新 更多