首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GenerationType.IDENTITY更改为GenerationType.SEQUENCE (和back) PostgreSQL

将GenerationType.IDENTITY更改为GenerationType.SEQUENCE (和back) PostgreSQL
EN

Stack Overflow用户
提问于 2018-11-26 15:59:02
回答 1查看 595关注 0票数 0

我们有使用GenerationType.IDENTITY的实体数据库,其中有一些技术问题,我用GenerationType.SEQUENCE代替了它,因为我误解了序列的作用。现在,数据库表都被编号为+1,在开始使用->之前,所有表的编号都是共享的,每个表中有巨大的空隙,因为它在整个系统中共享。

当我现在恢复到标识时,它开始对上次使用标识时停止的位置进行编号。(如果)标识能提供与序列数发生冲突的数字(如果),那么会发生什么?(遗憾的是,我无法真正测试它,因为最后一个身份条目是9000,第一个序列是25毫秒-这是因为在一个月内DB中有大量的添加/删除)

有什么方法可以从最后一个序列值开始对标识编号吗?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 17:16:17

标识和序列之间的区别--在PostgreSQL中最少--是标识为每个表创建一个序列,而正如您注意到的那样,序列对所有表使用一个全局序列。

假设您有一个名为MyEntity (或my_entity作为表名)的实体--使用标识策略--应该有一个名为:MyEntity的序列序列可能被命名(这取决于JPA实现),如hibernate_sequence.

如果您可以访问数据库--例如使用psql --您只需检查标识序列并设置其值:。

代码语言:javascript
复制
ALTER SEQUENCE my_entity_id_sequence RESTART with_your_value;

例如,with_your_value可以在哪里

代码语言:javascript
复制
SELECT max(id)+1 FROM my_entity;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53484847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档