我们将使用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),这与我们的遗留数据库没有兼容性版本控制工具是必需的。
答案 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>