首页 文章

处理liquibase中的多个参数值

提问于
浏览
1

我们将使用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默认值(java.sql.Types . * types),这与我们的遗产不兼容db-versioning工具是必需的 .

1 回答

  • 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>
    

相关问题