Flyway的迁移前和迁移后脚本

Eli*_*Eli 7 database migration flyway

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

  1. 删除所有视图和存储过程.
  2. 运行迁移.
  3. 重建视图和存储过程.

这可确保对架构的任何更改都反映在相关视图和存储过程中.步骤(1)和(3)将是bash脚本.

这可能在Flyway?

elm*_*tec 6

扩展Axel 的响应:使用 sql 脚本进行回调只是意味着将beforeMigrate.sql(例如,这是其中一个关键字)放入包含迁移的目录中,Flyway 将beforeMigrate.sql在其他迁移脚本之前执行。即使在schema_version被锁定之前。

其他回调名称(例如)在回调文档afterMigrate中列出。


Axe*_*ine 5

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

以前的答案

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

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

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

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

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