如果我有一个基于文件的HSQLDB实例,并且我尝试在java代码中获取一些原始序列值:
JdbcTemplate(dataSource).queryForObject("call next value for mysequence", int.class)
然后,当我重新启动数据库时,我在db中看到以下行。脚本:
ALTER SEQUENCE PUBLIC.MYSEQUENCE RESTART WITH 1
这意味着每次重新启动时,MYSEQUENCE都会从1开始,而不管在DML语句外调用了多少次call next值。
如果mysequence的下一个值作为更新或插入的一部分被调用,那么在db中使用重新启动看起来是正确的。脚本文件。
我会做错什么?
(后续:我在Derby中尝试了相同的习惯用法,除了一个小问题,意外的DB关闭将导致序列在之前预分配的值之后启动,而不是在下一个值之后启动,它按预期工作。H2按预期工作)