我想用从数据库中定义的序列自动生成的主键进行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)
但是当我执行插入操作时,这些操作都没有在键中放入任何内容(插入操作在空主键上失败)。
如何做到这一点?
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)
| 归档时间: |
|
| 查看次数: |
6321 次 |
| 最近记录: |