5

liquibaseを使用して、実行時に何らかのマッピングを実行することは可能modifyDataTypeですか?

次の例を考えてみましょう。

<changeSet id="1" author="me">
    <createTable tableName="person">
        <column name="id" type="int">
            <constraints primaryKey="true" nullable="false" />
        </column>
        <column name="firstName" type="varchar(100)"></column>
        <column name="lastName" type="varchar(100)"></column>
        <column name="marital_status" type="int">
            <constraints nullable="false" />
        </column>
    </createTable>
</changeSet>
<changeSet id="2" author="me">
    <modifyDataType tableName="person" columnName="type"
        newDataType="varchar(36)" />
</changeSet>

私の列'type'で、次のマッピングが発生するようにしたいと思います。

0->single
1->married
etc..

これはliquibaseで可能ですか?コマンドラインから使用しています。

4

1 に答える 1

5

これは、何らかのマッピングやリファクタリングによって直接行うことはできないと思います。

これを行う 1 つの方法は、これを使用してsql、データ型を変更する変更セットの直後に実行される別の変更セットに入れることです。

<changeSet id="3" author="me">
    <sql>
        update person set martial_status = 'single' where martial_status = 0;
        update person set martial_status = 'married' where martial_status = 1;
    </sql>
</changeSet>

これはあくまでアイデアとして書いておきます。それはテストされていません。

ID 2 の変更セットが正常に実行された場合にのみ、この変更セットを実行するための前提条件を追加できます。

于 2013-03-20T09:41:33.930 に答える