変更セットの取り消し
LiquiBase は、データベースに対して行った変更を、自動でもカスタマイズしたロールバックのための SQL 文のどちらからでも取り消す(ロールバックする)ことができます。ロールバックは、 コマンドライン , Ant, Maven, そして Grails から利用できます。
どのようにロールバックは制御されるか
多くのリファクタリング、たとえば “create table”, “rename column” そして “add column” には自動的にロールバック文を作成できます。もし変更ログにこのカテゴリに属する一つの文しかなかった場合は、ロールバックコマンドは自動的に生成されます。
そのほかのリファクタリング、たとえば “drop table” や “insert data” には、自動で生成できるロール直接のロールバックコマンドがありません。このような場合や、デフォルトで生成されるロールバック文を上書きしたい場合は、changeSet タグ内で、<rollback/> タグを利用してコマンドを設定できます。
"Roll Back To(どこに戻るか)" モード
この3つのやり方でどの変更をロールバックするかを指定できます:
日/時刻
ロールバックする日/時刻を指定すると、指定された 日/時刻より後にデータベースに対して実行されたすべての変更セットがロールバックされます。
タグ
ロールバックへのタグを指定することで、そのタグが適用された後のすべての変更セットでデータベースに対して実行されたものがロールバックされます。データベースに対してどのようにタグをつけるかは、 コマンドライン ドキュメントを参照してください。
変更セットの数
ロールバックする変更セットの数を指定できます。
ロールバック実行モード
LiquiBase は、ロールバックを管理する3つのモードがあります:
ロールバックの直接実行
ロールバックコマンドは対象となるデータベースに直接実行できます。変更のうちロールバックできないものが一つでもあれば、注意が促されどのコマンドもロールバックされません。
ロールバックスクリプトの生成
実際にデータベースを更新するのではなく、データベースをロールバックするのに必要な SQL 文を生成できます。これはどのようなロールバックコマンドが実施されるのかを実行前に確認したい場合には有益です。
"将来のロールバック" スクリプトの生成
このモードは、移行スクリプトを生成するのと同じタイミングでロールバックスクリプトを生成できるようにデザインされています。更新されたアプリケーションを利用して、データベースを新しいバージョンに更新する SQL と、必要に応じて新しいバージョンから現在のバージョンにデータベースを戻すスクリプトの両方を手に入れることができます。この機能は、データベース管理者がデータベースに対して実行される SQL を制御したいときだけでなく、アプリケーションがロールバックに関するドキュメントを必要としたり、もしくは、 SOX 対応 プロセスのためにも有用です。ロールバックの日付やタグ、数はこのモードでは指定できません。
