2012-07-05 51 views
2

我有一个使用Liquibase定义的Oracle/MySql/PostgreSql模式。我有一些插入语句。现在我想编写支持所有三个数据库的<insert>标记,例如,如果它是MySql,它将使用自动递增功能和Oracle序列。我可以在不重复<insert>标记的情况下达到此目的吗?Liquibase DB独立插入语句

+0

要完全跨平台总是意味着你必须支持最小公分母在功能方面....你明白,使用自动增量意味着你不” t知道记录的主键,因此很难为变更集提供回滚逻辑? – 2012-07-06 23:56:28

回答

0

其实我觉得这比想象的更痛苦。我相信你必须用不同的变更集来做到这一点。见How do I differentiate between databases when using e.g. sequence

所以你会:

<changeSet id="x" author="y"> 
    <preConditions> 
    <dbms type="oracle"/> 
    </preConditions> 
    ... 
</changeSet> 
<changeSet id="xx" author="y"> 
    <preConditions> 
    <dbms type="mysql"/> 
    </preConditions> 
    ... 
</changeSet> 
<changeSet id="xxx" author="y"> 
    <preConditions> 
    <dbms type="postgres"/> 
    </preConditions> 
    ... 
</changeSet>