2012-07-05 49 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>