2016-05-10 10 views
0

2つの列をテーブルに追加して1を変更する必要があるとしましょう。純粋なデザインビューから、3つの異なる前提条件を持つ3つのチェンジセットを作成する必要があります。リキベースにチェンジセットを組み合わせる方法はありますか?

これは明確な設計アプローチですが、非常に高価になる可能性のある3つの別個のalter tableがあります。たとえば、MySqlは、列が追加または変更されたときにテーブル全体をコピーまたは再構築します。しかし、いくつかの変更されたステートメントを1つに結合することができます。しかしチェンジセットを変更することは、不可能な前提条件を組み合わせる必要があります。

いくつかの前提条件を見て、成功した前提条件からのみalter tableを作成する方法はありますか?

+2

前提条件に関する注意事項:一般的に、リキセットのチェンジログトラッキングを使用して、changeSetが適用されているかどうかを知る必要があります。前提条件は時には役立ちますが、実行すべきものを決定するために専らそれに頼っているのであれば、データベースの変更が十分に制御されていないのは通常「悪いコードの匂い」です。単独のチェックのために前提条件を使用してデータベースをオンラインに戻すことを確かめてください。 –

答えて

0

MySQLの場合、複数のネストされた列を持つaddColumnタグがある場合、すべての列を一度に追加する単一のALTER TABLEステートメントが生成されます。

"and"および "or"ブロックに複数の前提条件をネストすることができるので、column1が欠落していないかどうかをチェックするchangeSetを1つ持ち、両方が欠けている場合は、 。次に、次のchangeSetは、欠落しているcolumn1と欠落しているcolumn2と、間違ったデータ型の次のものをチェックできます。

事前条件onFail属性を "MARK_RAN"に設定して、実行時にマークされ、各更新時に絶えず再評価されないようにします。

+0

同じアプローチになっています。 – Cherry

関連する問題