我正在使用postgres和Hibernate,我注意到生成的id有一些奇怪的地方。它在序列中发生了巨大的跳跃,我有一个有1524行的表,最高的id仍然是602778。
我的id列定义为:
id bigserial并得到nextval('my_id_seq'::regclass)的支持
my_id_seq的起始值为1,增量为1,并在通过SQuirreL调用nextval时会很好地增加。
在我的Hibernate实体中,id映射如下:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;是什么导致了id序列中的如此突然的跳跃(一度从4152跳到12041)?
发布于 2016-12-14 16:12:44
回滚和错误会做到这一点。例:
t=# create table s(i serial);
CREATE TABLE
t=# insert into s values (DEFAULT);
INSERT 0 1
t=# insert into s values (DEFAULT) returning i;;
i
---
2
(1 row)
INSERT 0 1现在启动一个事务:
t=# begin;
BEGIN
t=# insert into s values (DEFAULT) returning i;
i
---
3
(1 row)
INSERT 0 1
t=# rollback;
ROLLBACK使用了值3,现在存在一个缺口:
t=# insert into s values (DEFAULT) returning i;
i
---
4
(1 row)
INSERT 0 1核对:
t=# select * from s;
i
---
1
2
4
(3 rows)https://stackoverflow.com/questions/41146960
复制相似问题