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

1 问题背景

将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(序列)。

2 序列与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;

3 实现id自增长的完整步骤

在创建id字段时,需要将id的类型设置为"serial",会自动生成相应的序列。
如下:
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;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值