在 h2 数据库中创建序列
Create sequence in h2 database
我想在 h2 数据库中为以下实体创建一个序列
public class Label {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "label_sequence")
@SequenceGenerator(name = "label_sequence", sequenceName = "label_sequence", allocationSize = 100)
private Long id;
private String name;
private String value;
}
下面是我正在执行的sql命令
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1
MINVALUE 1;
我收到以下错误:
Syntax error in SQL statement "CREATE SEQUENCE LABEL_SEQUENCE
START WITH 1
INCREMENT BY 1
MINVALUE[*] 1 "; SQL statement:
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1
MINVALUE 1 [42000-140]
下面的查询有效
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1;
但是由于我猜的分配大小,我得到的 ID 值小于 1。
如何确保 ID 值永远不会低于 1?
您使用的是非常旧版本的 H2 数据库,H2 1.2.140 是 10 年前发布的。您需要使用一些了解此语法的现代版本。
如果你真的需要使用这样的旧版本,只需删除 MINVALUE
子句,你的序列将生成值 1, 2, … 9223372036854775807,所以你在溢出之前有足够的时间。如果您愿意,可以向列添加 CHECK
约束以提高安全性。
我想在 h2 数据库中为以下实体创建一个序列
public class Label {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "label_sequence")
@SequenceGenerator(name = "label_sequence", sequenceName = "label_sequence", allocationSize = 100)
private Long id;
private String name;
private String value;
}
下面是我正在执行的sql命令
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1
MINVALUE 1;
我收到以下错误:
Syntax error in SQL statement "CREATE SEQUENCE LABEL_SEQUENCE
START WITH 1
INCREMENT BY 1
MINVALUE[*] 1 "; SQL statement:
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1
MINVALUE 1 [42000-140]
下面的查询有效
CREATE SEQUENCE label_sequence
START WITH 1
INCREMENT BY 1;
但是由于我猜的分配大小,我得到的 ID 值小于 1。
如何确保 ID 值永远不会低于 1?
您使用的是非常旧版本的 H2 数据库,H2 1.2.140 是 10 年前发布的。您需要使用一些了解此语法的现代版本。
如果你真的需要使用这样的旧版本,只需删除 MINVALUE
子句,你的序列将生成值 1, 2, … 9223372036854775807,所以你在溢出之前有足够的时间。如果您愿意,可以向列添加 CHECK
约束以提高安全性。