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

how to get current value of sequence in 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 类型序列。

参考:http://hsqldb.10974.n7.nabble.com/Current-value-of-a-sequence-td427.html

但他们提到的“提交”错误似乎已得到修复(至少在 v2.3.2 中),就您无需提交即可看到的价值而言。

另请注意,此方法在 2.3.2 中“有时很不稳定”,但在 v2.3.6 中似乎可以正常工作

自从邮件列表中的讨论以来,在过去的 10 年里,事情已经取得了进展。对于一般用途,现在有 CURRENT VALUE FOR sequence_name 表达式,returns 会话中使用的最后一个值。请参阅 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;