如何在 HSQL DB 中创建具有最大行值的序列?
Posted
技术标签:
【中文标题】如何在 HSQL DB 中创建具有最大行值的序列?【英文标题】:How to create sequence with maximum row value of a column in HSQL DB? 【发布时间】:2019-10-10 11:05:44 【问题描述】:我需要创建一个从 HSQL 中列的最大行值开始的序列。有什么程序可以做对吗?
CREATE SEQUENCE seq START WITH 1 INCREMENT BY 1 => 工作正常
如果我这样给予 CREATE SEQUENCE seq START WITH SELECT MAX(ID) FROM TEST INCREMENT BY 1
显示错误:意外令牌:SELECT / 错误代码:-5581 / 状态:42581
【问题讨论】:
如果你不是用 liquibase 创建的,为什么还要有 Liquibase 标签 其实在知道查询后我也必须在 liquibase 中创建它 【参考方案1】:我不确定我是否正确理解您的问题,但在 H2 中您可以使用
CREATE SEQUENCE SEQ START WITH 9223372036854775807 INCREMENT BY -1
它将返回值 9223372036854775807、9223372036854775806、9223372036854775805、...
在 HSQLDB 中你可以使用非常相似的
CREATE SEQUENCE SEQ START WITH 2147483647 INCREMENT BY -1
对于无法容纳如此大值的列,应减小初始值。
如果您有一个包含现有值的表,并希望找到其中最大的一个并将其用作序列的起始值,则在 H2 中您可以直接使用子查询:
CREATE SEQUENCE SEQ START WITH (SELECT MAX(columnName) FROM tableName)
您可能希望在查询结果中加 1。 我不知道如何在 HSQLDB 中仅使用 SQL 来做到这一点。
也许你的意思是别的,你绝对应该编辑你的问题并提供更多细节。
【讨论】:
以上是关于如何在 HSQL DB 中创建具有最大行值的序列?的主要内容,如果未能解决你的问题,请参考以下文章