如何在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;
如何获取 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;