【问题标题】:HSQL sequence creation from max id in a cloumn从列中的最大 id 创建 HSQL 序列
【发布时间】: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) 查询

标签: java hibernate sequence liquibase hsqldb


【解决方案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 序列时遇到了同样的问题,并通过编写程序来克服。这样我正在寻找一个选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多