如何在使用flywaydb时对版本控制存储过程进行版本控制?

时间:2014-05-01 20:34:08

标签: java sql-server stored-procedures database-migration flyway

我目前有一个使用Microsoft SQL Server后端的Java Web应用程序。数据库迁移当前由sqlcmd手动完成,它使用:r命令引用存储过程和视图的脚本文件。

这样每个存储过程都有自己的文件" proc_someprocedure.sql"迁移由升级脚本" 6.1 upgrade.sql"完成。它会引用proc文件,并在其当前版本中重新创建它。

我们正在寻求迁移到flyway并让应用程序在部署时迁移它自己的数据库。但是,我找不到为每个存储过程维护单个源代码文件的简单方法。如果更改了存储过程,我需要在版本控制中对V_6_1__change.sql文件和proc_someprocedure.sql文件进行更改。

我试图避免复制/粘贴的sql代码,因为它过去一直困扰着我们。其他人如何处理这种情况?

1 个答案:

答案 0 :(得分:2)

从3.0开始,没有一流的支持。然而,有三种方法可以实现这一目标:

  • 使用自定义MigrationResolver挂接到您使用的任何源控件并以此方式检测更改
  • 使用使用afterMigrate
  • 重新创建所有存储过程的FlywayCallback
  • 在单独的架构中使用单独的Flyway实例,并将cleanOnValidationError设置为true。每次校验和更改时,都将清除架构,并重新运行该Flyway实例管理的所有迁移
相关问题