首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用序列时区分不同的数据库

问如何在使用序列时区分不同的数据库
EN

Stack Overflow用户
提问于 2012-06-28 21:42:10
回答 2查看 1.8K关注 0票数 2

我刚开始使用Liquibase,偶然发现了一个区分不同数据库功能的问题。

我们希望支持多个数据库(Oracle、MySQL、Derby -仅举三例)。

它们都有不同的功能。具体地说,Oracle支持sequences,而MySQL和Derby则不支持。

当我让hibernate生成DDL时,我可以选择不同的方言,它会考虑这些不同的功能,在使用Oracle时生成Sequencer,在使用Derby或MySQL时使用普通表(用于ID生成)。

现在,我知道可以通过在dbms属性中指定'oracle‘来约束变更集。但是,我如何才能为其他数据库实现普通表解决方案呢?dbms似乎没有'not oracle‘属性。

其他人是怎么处理这个问题的?(我在liquibase页面和论坛上都找不到任何关于它的东西。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 02:58:57

尝试在更改集上使用precondition。支持布尔运算。

例如

代码语言:javascript
复制
 <preConditions onFail="CONTINUE">
     <or>
         <dbms type="oracle" />
         <dbms type="mysql" />
     </or>
 </preConditions>
票数 3
EN

Stack Overflow用户

发布于 2015-04-08 19:07:21

另一种方法是将所有序列放在一个更改日志文件中,您可以在主更改日志中include该文件,然后执行以下操作:

代码语言:javascript
复制
<changeSet
    dbms="oracle,db2,db2i"
    author="mccallim (generated)"
    id="1419011907193-1"
>
    <createSequence
        schemaName="${main.schema}"
...

该变更集仅对列出的DBMS执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11246009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档