如何在Liquibase中使用序列进行插入

Jay*_*Jay 4 hsqldb liquibase

我想用从数据库中定义的序列自动生成的主键进行liquibase插入。目标数据库是HSQLDB。

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

<insert ...>
   <column name="TAG_ID" valueNumeric="2"/>
Run Code Online (Sandbox Code Playgroud)

我发现了这个(肯定是较旧的)对话,但问题仍然相同。建议的修复不适用于HSQLDB。

查看文档,我尝试了一些类似的操作

<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" />
Run Code Online (Sandbox Code Playgroud)

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

如何做到这一点?

Jay*_*Jay 5

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

<changeSet ...
    <sql dbms="hsqldb" >SET DATABASE SQL SYNTAX ORA TRUE</sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

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

<insert ...
    <column name="TAG_ID" valueComputed="TAG_ID_SEQ.NEXTVAL"/>
Run Code Online (Sandbox Code Playgroud)