问题描述
我知道我可以通过“调用下一个值”获得“下一个值”,但我想基本上获得“最后给出的值”,类似于postgres的last_value
https://dba.stackexchange.com/a/78228/16892
解决方法
这似乎起作用:
select (CAST(next_value AS INTEGER) - 1) from information_schema.sequences where sequence_name = upper('<your seq name>')
假设您的序列以1及其正常的INT类型序列递增。
ref:http://hsqldb.10974.n7.nabble.com/Current-value-of-a-sequence-td427.html
,但就您所看到的值而不必执行提交为止,看来它们所引用的“提交”错误已得到修复(至少在v2.3.2中已解决)。
还请注意,此方法在2.3.2中有时是“ flakey”,但似乎在v2.3.6中可以正常使用
,自邮件列表中的讨论以来,最近10年里事情发展了。对于一般用途,现在有CURRENT VALUE FOR sequence_name
表达式,它返回会话中使用的最后一个值。请参见http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_value_expression的指南,其中包含以下示例:
INSERT INTO MYTABLE(COL1,COL2) VALUES 2,NEXT VALUE FOR MYSEQUENCE;
INSERT INTO CHILDTABLE(COL1,COL2) VALUES 10,CURRENT VALUE FOR MYSEQUENCE;