处理liquibase中的多个参数值

时间:2015-04-20 14:07:41

标签: liquibase

我们将使用liquibase参数值来控制多个受支持的数据库引擎上的列类型。我希望能够在changelog文件中指定列类型。首先是所有的dbms和(即来自java.sql.Types。*的东西),然后覆盖一些特定的。

看起来像这样:

<property name="DATETIME.type" value="TIMESTAMP"/>
<property name="DATETIME.type" value="DATE" dbms="oracle" />

但Liquibase似乎采用了第一个找到的参数值(所以在oracle中,TIMESTAMP类型在上面的例子中被采用)。 我可以通过简单地更改这样的行的顺序来可靠地达到预期的结果吗?:

<property name="DATETIME.type" value="DATE" dbms="oracle" />
<property name="DATETIME.type" value="TIMESTAMP"/>

编辑: 我想归档的是支持新数据库而不需要更改类型映射 - 所以要对数据库使用liquibase default(java.sql.Types。* types),这与我们的遗留数据库没有兼容性版本控制工具是必需的。

1 个答案:

答案 0 :(得分:0)

关于如何区分liquibase here中的数据库,我问了一个类似的问题。

虽然它是关于序列的,但我认为可以使用相同的方法来处理不同的列类型:

<changeSet id="1" author="bob">
    <preConditions onFail="CONTINUE">
        <not>
            <dbms type="oracle" />
        </not>
    </preConditions>

        // contents of your changeset here
        <property name="DATETIME.type" value="TIMESTAMP"/>

</changeSet>