如何在hsqldb中获取序列的当前值

问题描述

如何获取HsqlDB中序列的当前值?

我知道我可以通过“调用一个值”获得“下一个值”,但我想基本上获得“最后给出的值”,类似于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;