我想做一个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" />
但是当我执行插入时,没有任何内容在键中放入任何内容(插入在空主键上失败)。
如何实现这一目标?
答案 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"/>