基于文件的HSQLDB不跟踪序列

时间:2018-01-29 11:32:11

标签: java sequence hsqldb

如果我有一个基于文件的HSQLDB实例,并且我尝试将一些原始序列值放入我的java代码中:

JdbcTemplate(dataSource).queryForObject("call next value for mysequence", int.class)

然后当我重新启动数据库时,我在db.script中看到以下行:

ALTER SEQUENCE PUBLIC.MYSEQUENCE RESTART WITH 1

这意味着每次重新启动时,不管在DML语句之外调用下一个值多少次,MYSEQUENCE都会再次从1开始。

如果mysequence的下一个值是作为更新或插入的一部分调用的,那么RESTART WITH在db.script文件中看起来是正确的。

我可能做错了什么?

(跟进:我在Derby中尝试过相同的习惯用法,除了一个小问题,意外的数据库关闭会导致序列在先前预先分配的值之后启动,而不是下一个值,它可以工作正如预期的那样.H2按预期工作)

1 个答案:

答案 0 :(得分:2)

您应该执行SHUTDOWN语句来关闭数据库。这应该保持序列值。