如果我有一个基于文件的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按预期工作)
答案 0 :(得分:2)
您应该执行SHUTDOWN
语句来关闭数据库。这应该保持序列值。