【发布时间】:2017-08-05 02:55:51
【问题描述】:
Flyway 在其文档中陈述了可重复迁移的一些用法:
用法:(重新)创建视图/过程/功能/包/...
我想在可重复的迁移中创建一些触发器/函数,稍后在版本迁移中引用这些触发器/函数,并将它们应用于表。
Flyway 最后运行可重复迁移,这意味着触发器在被引用时不存在。
是否可以在版本化迁移之前运行某些可重复的迁移?
是否不支持此用例,因为自动更新应用于表的触发器是不好的做法?
【问题讨论】:
Flyway 在其文档中陈述了可重复迁移的一些用法:
用法:(重新)创建视图/过程/功能/包/...
我想在可重复的迁移中创建一些触发器/函数,稍后在版本迁移中引用这些触发器/函数,并将它们应用于表。
Flyway 最后运行可重复迁移,这意味着触发器在被引用时不存在。
是否可以在版本化迁移之前运行某些可重复的迁移?
是否不支持此用例,因为自动更新应用于表的触发器是不好的做法?
【问题讨论】:
我认为不可能先调用重复的迁移脚本。但是您可以使用回调脚本来达到您的目的。阅读它here。
因此,您可以在迁移脚本目录中拥有一个名为 beforeMigrate.sql 的脚本,并使用它来初始化您想要的内容。
虽然我不明白,为什么不在版本化迁移完成后重新创建触发器?如果您有像某些触发器这样的临时(短期)对象,在我看来是对的,将它们绑定到它们声明的同一脚本中的永久对象 - 我的意思是在重复的迁移脚本中。
【讨论】: