移行の前後にフック スクリプトを実行する方法を探しています。たくさんのビューとストアド プロシージャがあり、プロセスを次のようにしたいと考えています。
- すべてのビューとストアド プロシージャを削除します。
- 移行を実行します。
- ビューとストアド プロシージャを再構築します。
これにより、スキーマへの変更が関連するビューとストアド プロシージャに確実に反映されます。手順 (1) と (3) は bash スクリプトになります。
Flywayでこれは可能ですか?
アップデート2014-04-29:これはFlywayCallbackインターフェースを実装することでFlyway3.0で可能になりました。
簡単な答えは次のとおりです。いいえ、現時点ではありません。
理由は次のとおりです。Flywayの初期設計を作成すると同時に、これについても考えました。しかし、この側面について考えれば考えるほど、これらのプレスクリプトとポストスクリプトも移行の不可欠な部分であるか、少なくとも移行が成功したいのであれば、移行なしでは実行できないことが明らかになりました。したがって、次のいずれかをお勧めします。
これらの手順が繰り返されている場合は、移行間のコードの重複を回避するために、x.1およびx.3でストアドプロシージャを呼び出すことができる場合もあります。
Flywayにデータベース構造へのすべての変更の実行を任せることで、すべてがより簡単になり、異なるテクノロジーの混合を回避できます。
Axel の応答を拡張するには: SQL スクリプトを使用したコールバックはbeforeMigrate.sql
、移行を含むディレクトリに配置すること (たとえば、これはとりわけ 1 つのキーワード) を意味し、Flyway はbeforeMigrate.sql
他の移行スクリプトの前に実行されます。schema_version
ロックされる前でも。
その他のコールバック名 (例: afterMigrate
) は、コールバックのドキュメントに記載されています。