欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库系列--postgreSQL序列与id自增长

程序员文章站 2022-05-03 19:17:49
...

一、问题背景

  将entity实体对象使用JPA持久化persist到数据库时,需要设置id的自增长方式。代码片段如下:
  
(postgreSQL9.9.5)

@Id
    @SequenceGenerator(name = "engine_info_seq", sequenceName = "engine_info_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "engine_info_seq")
    private Integer id;

然而并无法实现id的自增长。
原因很简单,无法找到名为engine_info_id_seq的SEQUENCE(序列)。

二、序列与id自增长的关系

个人理解:
所谓的自增长,实际上是将手动添加id的任务交给了序列SEQUENCE,定义好SEQUENCE的总长度,启始值,每次增长的幅度等等。
下面是SEQUENCE的生成代码:

CREATE SEQUENCE public.engine_info_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 126
  CACHE 1;
ALTER TABLE public.engine_info_id_seq
  OWNER TO postgres;

三、实现id自增长的完整步骤

在创建id字段时,需要将id的类型设置为”serial”,会自动生成相应的序列。
如下:
数据库系列--postgreSQL序列与id自增长
序列代码:

CREATE SEQUENCE public.engine_info_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 126
  CACHE 1;
ALTER TABLE public.engine_info_id_seq
  OWNER TO postgres;
相关标签: ID postgreSQL