コメントはSQLファイルのメタデータを定義するために使用され、各チェンジセットファイルはコメントで始まります。
--liquibase formatted sql
ファイル内の各変更セットはコメントで始まり、次のようにすべての必要なパラメーターを示します。
--changeset author:id attribute1:value1 attribute2:value2 [...]
以下の属性を変更セットに設定できます。
属性 | 説明 |
---|---|
stripComments | trueに設定すると、SQLステートメントを実行する前にすべてのコメントが削除されます。 デフォルト値はtrueです。 |
splitStatements | falseに設定すると、Liquibaseは「;」文字でSQL式を分離せず、ルーチンを記述するために使用されます。 |
endDelimiter | SQLステートメントの区切り文字を指定します。デフォルトは「;」です。 |
runAlways | trueに設定されている場合、各プロジェクトのビルド中に変更のリストが実行されます。 |
runOnChange | trueに設定されている場合、変更セットを変更すると、プロジェクトの次のビルドで実行されます。 |
コンテキスト | 変更セットのラベルを作成します。これは、後でリクエストに応じて実行できます。 |
runInTransaction | trueに設定すると、可能であれば、すべてのSQLステートメントが単一のトランザクションで実行されます。 デフォルト値はtrueです。 |
failOnError | True-実行時にエラーが発生した場合、すべての変更セットがキャンセルされます。 |
dbms | 変更セットが記述されているDBMSのタイプの表示。 |
パラメーターの設定後、前提条件が示されます(オプション)。 次は、セミコロンまたは「endDelimiter」属性で指定された文字で区切られた一連のSQLステートメントです。
現時点では、純粋なSQL変更セットでサポートされている前提条件は1種類のみです:SQLチェック。 前提条件の例:
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM my_table
expectedResultパラメーターには、SQLクエリが返す値が渡されます。 クエリは必ず単一の値を返す必要があります。
前提条件チェック処理の動作を設定するには、changeset'aパラメーターの設定に似た構文を使用します。
--preconditions attribute1:value1 attribute2:value2 [...]
属性は次のとおりです。
属性 | 説明 |
---|---|
onFail | 変更セットを実行できない場合のアクション。 |
onError | 変更セットがエラーを返したときのアクション。 |
onUpdateSQL | updateSQLモードで実行された場合に変更セットで実行されるアクション。 |
onFailMessage | 変更セットを実行できない場合に返されるメッセージ。 |
onErrorMessage | 変更セットが失敗した場合に返されるメッセージ。 |
次の値をonFailおよびonError属性に渡すことができます。
価値 | 説明 |
---|---|
停止 | 変更セットの実行をすぐに停止します。 |
続ける | 変更セットの内容はスキップされ、次回再実行が試行されます。 |
MARK_RAN | 変更セットは完了としてマークされます。 |
警告 | 警告が生成され、変更セットは引き続き正常に実行されます。 |
変更セットには、ロールバック用のSQLステートメントを含めることができます。 ロールバック式はコメントの形式で説明されます。
--rollback SQL STATEMENT
さて、結論として、チェンジセットファイルの小さな例を次に示します。
--liquibase formatted sql --changeset User1:1 create table test1 ( id int primary key, name varchar(255) ); --rollback drop table test1; --changeset User2:1 --preconditions onFail:CONTINUE onError:CONTINUE --precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM test1 insert into test1 (id, name) values (1, 'User1'); --rollback delete from test1 where id = 1;
上記のすべてを要約すると、そのようなファイルはxml'kiよりもはるかに簡単に読み書きできますが、すべてのバンがまだサポートされているわけではありません(前提条件による例、SQL Checkのみが現在サポートされています)。