如何使用Liquibase序列插入

时间:2015-05-15 13:49:14

标签: hsqldb liquibase

我想做一个liquibase插入,主键是从数据库中定义的序列自动生成的。目标数据库是HSQLDB。

它可以执行一个插入操作,指定主键的值

<insert ...>
   <column name="TAG_ID" valueNumeric="2"/>

我发现了这个(虽然年纪较大)conversation about it,但问题仍然存在。建议的修复程序不适用于HSQLDB。

the docs我尝试了一些像

这样的事情
<column name="TAG_ID"  defaultValueSequenceNext="TAG_ID_SEQ" />

<column name="TAG_ID"  defaultValueSequenceNext="TAG_ID_SEQ.NEXTVAL" />

<column name="TAG_ID"  valueComputed="TAG_ID_SEQ.NEXTVAL" />

<column name="TAG_ID"  autoIncrement="true" />

但是当我执行插入时,没有任何内容在键中放入任何内容(插入在空主键上失败)。

如何实现这一目标?

1 个答案:

答案 0 :(得分:5)

HSQLDB有一个使用Oracle语法的设置。您可以将HSQLDB设置为使用oracle语法,如下所示:

<changeSet ...
    <sql dbms="hsqldb" >SET DATABASE SQL SYNTAX ORA TRUE</sql>
</changeSet>

之后,它可以像这样插入:

<insert ...
    <column name="TAG_ID" valueComputed="TAG_ID_SEQ.NEXTVAL"/>