【问题标题】:How to create sequence with maximum row value of a column in HSQL DB?如何在 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 中创建它

标签: plsql hsqldb


【解决方案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 来做到这一点。

也许你的意思是别的,你绝对应该编辑你的问题并提供更多细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多