2011-12-19 10 views
1

db-maintainには、ストアド・プロシージャ/トリガなどの反復可能なスクリプトという概念があります。このようなスクリプトに変更があった場合は、再度ロールアウトする必要があります。 Flywayはファイル名の規則を常にチェックしています。繰り返し可能なスクリプトを作成するには、ファイルの名前を変更する必要があります。これを行うより効率的な方法はありますか?flywayを使用して反復可能なスクリプトを効率的に管理する

+0

好奇心をそらして:ユースケースをもう少し詳しく説明できますか? –

+0

アイデアは、私たちがコードを維持するのと同じ方法で、ストアドプロシージャとトリガを維持することです。変更が必要な場合は、ファイルを変更するだけで、チェックサムは異なり、スクリプトはdbに再度ロールアウトされます。 スクリプトが実際に繰り返し可能であることを確認することは、もちろん開発者の責任である必要があります。例:MySQLの場合。開発者は、CREATEトリガーまたはプロシージャー・ブロックの前にDROP IF EXISTSステートメントがあることを確認する必要があります。 – gazal

+0

ありがとうございます。私はあなたが今どこから来ているのか理解しています。トリガーとストアドプロシージャは、他のすべてのオブジェクトと同様にデータベースオブジェクトであるため、通常の移行パターンに従う必要があります。 –

答えて

3

フライウェイは、バージョン4.0で繰り返し可能な移行をサポートし始めました。反復可能な移行は、チェックサムが変更されるたびに再適用され、バージョン管理では単一ファイルとして維持できます。

を複数回繰り返し適用することは、同じ繰り返し可能な移行を確実にすることです。これには通常、DDL文のCREATE OR REPLACE句を使用する必要があります。

詳細here

2

この問題は、Issue Trackerとこのother questionにあります。

現在のところ、この機能のサポートはありません。

個人的に私は、ストアドプロシージャまたはトリガで再現性のアクション

  • パッケージを希望し、このプロシージャ/トリガは後に移行ごとに一度呼び出されることを確認し、通常の移行
  • の一環として、DBに追加それはそれはまた、定期的な移行の一環として起こる後
  • が必要なプロシージャ/トリガーに変更を確実に(わずか1行の文である可能性)

そうでない場合は、Issueにスターを付けてユースケースの詳細をコメントしてください。

更新:繰り返し可能なスクリプトは、現在、Flyway 4.0以降で完全にサポートされています。 https://flywaydb.org/documentation/migration/repeatable

関連する問題