Liquibase DB 独立插入语句
Posted
技术标签:
【中文标题】Liquibase DB 独立插入语句【英文标题】:Liquibase DB Independent Insert statements 【发布时间】:2012-07-05 23:44:13 【问题描述】:我有一个使用 Liquibase 定义的 Oracle/mysql/PostgreSql 架构。我有一些插入语句。现在我想编写支持所有三个数据库的<insert>
标记,这样如果它是 MySql,它将使用自动增量功能和 Oracle 序列。我可以在不复制<insert>
标签的情况下实现这一点吗?
【问题讨论】:
要完全跨平台总是意味着你必须在功能方面支持最小公分母......你明白使用自动增量意味着你不知道主键记录,因此很难为您的变更集提供回滚逻辑? 【参考方案1】:其实我觉得这比你想象的还要痛苦。我相信您必须使用不同的变更集来执行此操作。见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>
【讨论】:
以上是关于Liquibase DB 独立插入语句的主要内容,如果未能解决你的问题,请参考以下文章
将 UUID 值插入 PostgreSQL 数据库时出现 Liquibase 问题