9

移行の前後にフック スクリプトを実行する方法を探しています。たくさんのビューとストアド プロシージャがあり、プロセスを次のようにしたいと考えています。

  1. すべてのビューとストアド プロシージャを削除します。
  2. 移行を実行します。
  3. ビューとストアド プロシージャを再構築します。

これにより、スキーマへの変更が関連するビューとストアド プロシージャに確実に反映されます。手順 (1) と (3) は bash スクリプトになります。

Flywayでこれは可能ですか?

4

2 に答える 2

6

アップデート2014-04-29:これはFlywayCallbackインターフェースを実装することでFlyway3.0で可能になりました。

前の回答

簡単な答えは次のとおりです。いいえ、現時点ではありません。

理由は次のとおりです。Flywayの初期設計を作成すると同時に、これについても考えました。しかし、この側面について考えれば考えるほど、これらのプレスクリプトとポストスクリプトも移行の不可欠な部分であるか、少なくとも移行が成功したいのであれば、移行なしでは実行できないことが明らかになりました。したがって、次のいずれかをお勧めします。

  • 1回の移行で1、2、3をマージ
  • x.1(ドロップビュー)、x.2(実際の移行)、x.3(ビューの再構築)の3つの個別の移行があります

これらの手順が繰り返されている場合は、移行間のコードの重複を回避するために、x.1およびx.3でストアドプロシージャを呼び出すことができる場合もあります。

Flywayにデータベース構造へのすべての変更の実行を任せることで、すべてがより簡単になり、異なるテクノロジーの混合を回避できます。

于 2011-09-01T10:11:47.747 に答える
5

Axel の応答を拡張するには: SQL スクリプトを使用したコールバックはbeforeMigrate.sql、移行を含むディレクトリに配置すること (たとえば、これはとりわけ 1 つのキーワード) を意味し、Flyway はbeforeMigrate.sql他の移行スクリプトの前に実行されます。schema_versionロックされる前でも。

その他のコールバック名 (例: afterMigrate) は、コールバックのドキュメントに記載されています。

于 2015-05-11T14:39:07.283 に答える