从列中的最大 id 创建 HSQL 序列

Posted

技术标签:

【中文标题】从列中的最大 id 创建 HSQL 序列【英文标题】:HSQL sequence creation from max id in a cloumn 【发布时间】:2019-10-10 10:02:49 【问题描述】:

我想为 max(id) 创建序列并在 HSQL 中将其递增 1

CREATE SEQUENCE test1_seq [AS INTEGER | BIGINT]
    [START WITH (Select max(id) from test)] [INCREMENT BY 1];

但它不起作用

【问题讨论】:

如果序列的目的是为测试表的元组创建唯一 ID,您可以在测试类的 Hibernate 映射文件中执行此操作:<id name="ID" type="long"> <generator class="increment"></generator></id> 是否有可能在 hsql db 中创建过程。在第 2 行 START WITH 接受数值,但不接受内联 select max(id) 查询 【参考方案1】:

HSQLDB 仅支持 CREATE SEQUENCE ... START WITH 和 ALTER SEQUENCE ... RESTART WITH 语句的常量。

可以在 CREATE TABLE 语句中使用命名的 SEQUENCE,它会从起始值自动递增:

CREATE TABLE TEST (id BIGNIT GENERATED BY DEFAULT AS SEQUENCE test1_seq, ...)

【讨论】:

我在创建 oracle 序列时遇到了同样的问题,并通过编写程序来克服。这样我正在寻找一个选项

以上是关于从列中的最大 id 创建 HSQL 序列的主要内容,如果未能解决你的问题,请参考以下文章

从列中的字符串中提取每行的最大值

如何为HSQL中的每个组选择列中具有最大值的行?

如何从列中获取最大年份并保留其余部分?

如何在 HSQL DB 中创建具有最大行值的序列?

HSQL DB 中表名的最大大小是多少?

在Laravel中获取具有不同外国ID的列中的最大值