Flyway的迁移前和迁移后脚本

时间:2011-08-28 07:24:09

标签: database migration flyway

我正在寻找一种在迁移之前和之后执行钩子脚本的方法。 我有一堆视图和存储过程,并希望过程是:

  1. 删除所有视图和存储过程。
  2. 运行迁移。
  3. 重建视图和存储过程。
  4. 这可确保对架构的任何更改都反映在相关视图和存储过程中。步骤(1)和(3)将是bash脚本。

    这可能在Flyway吗?

2 个答案:

答案 0 :(得分:5)

更新2014-04-29:现在可以通过实施FlywayCallback接口实现Flyway 3.0。

以前的回答

简短的回答是:不,不是在这一点上。

原因如下:我想到了这一点以及我正在为Flyway设置初始设计。我越是想到这个方面,我就越清楚这些前后脚本也是迁移的一个组成部分,或者至少是迁移离不开它的东西。想要成功。因此我建议:

  • 合并1,2和& 3在一次迁移中
  • 有3个单独的迁移x.1(删除视图),x.2(实际迁移),x.3(重建视图)

如果这些步骤重复,您甚至可以让x.1和x.3调用存储过程为您工作,以避免迁移之间的代码重复。

让Flyway负责执行对数据库结构的所有更改,使整个事情变得更加简单,避免混合使用不同的技术。

答案 1 :(得分:3)

扩展Axel's response:使用sql脚本进行回调只是意味着在包含迁移的目录中放置beforeMigrate.sql(例如,这是一个关键字),Flyway将执行{{1}在其他迁移脚本之前。甚至在beforeMigrate.sql被锁定之前。

其他回叫名称(例如schema_version)列在documentation for callbacks