9

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

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

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

这在 Flyway 中可能吗?

4

2 回答 2

6

2014 年 4 月 29 日更新:现在可以通过 Flyway 3.0 实现 FlywayCallback 接口。

上一个答案

简短的回答是:不,目前还没有。

原因如下:我在制定 Flyway 的初始设计时就考虑到了这一点。不过,我对这方面考虑得越多,我就越清楚这些pre 和 post 脚本也是迁移不可或缺的一部分,或者至少是迁移如果想要成功就离不开的东西。因此,我建议:

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

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

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

于 2011-09-01T10:11:47.747 回答
5

扩展Axel 的响应:带有 sql 脚本的回调仅意味着将beforeMigrate.sql(例如,这是其中一个关键字)放在包含迁移的目录中,并且 Flyway 将beforeMigrate.sql在其他迁移脚本之前执行。甚至在schema_version被锁定之前。

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

于 2015-05-11T14:39:07.283 回答