我有一个使用liquibase定义的oracle/mysql/postgresql模式。我有一些插入语句。现在我要编写支持所有三个dbs的<insert>标记,这样如果它是mysql,它将使用auto increment特性,并为oracle编写sequence。我可以在不复制<insert>标记的情况下实现这一点吗?

最佳答案

事实上,我觉得这比你想象的还要痛苦。我相信你必须用不同的变更集来实现这一点。见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>

关于mysql - Liquibase DB独立插入语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11354041/

10-11 02:53