undefined control sequence_PostgreSQL----Sequence序列的那些事

本文介绍了PostgreSQL中的Sequence概念,它用于生成自动增长的唯一标识。详细讲解了如何创建、查找、修改和删除Sequence,包括其相关参数如MINVALUE、MAXVALUE、INCREMENT和CYCLE等,并提供了示例SQL语句。同时,阐述了Sequence的分配策略,包括currval和nextval的使用区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL是关系型数据库的一种,和Oracle、MySQL一样被广泛使用。工作中有用到过PostgreSQL,这里对序列的知识点做下总结。

Sequence是一种自动增加的数字序列,一般作为行或者表的唯一标识,用作代理主键。

1、创建Sequence

例如:创建一个seq_commodity,最小值(MINVALUE)为1,最大值(MAXVALUE)为9223372036854775807,从1开始,增量的步长为1,缓存为1的循环排序Sequence。CYCLE 表示循环,是指从最大值后面从头开始。

我们可以写出SQL语句如下:

  CREATE SEQUENCE seq_commodity
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1 
  CYCLE;

2、查找 Sequence中的值

SELECT nextval('seq_commodity');

其中nextval表示下一个值。

3、修改 Sequence

用alter sequence来修改,上面创建的Sequence语句中除了start以外的所有sequence参数都可以被修改。

看下alter sequence 的SQL语句

ALTER SEQUENCE seq_commodity 
  INCREMENT 10 
  MAXVALUE 10000 
  CYCLE 
  NOCACHE ; 

当然如果想要修改start的值,可以先 drop sequence,然后再重新创建Sequence。

下面来看看删除Sequence吧

4、删除Drop Sequence

DROP SEQUENCE seq_commodity;

5、Sequence的分配策略

分配策略分为两种:当前序列号和下一个序列号

(1)select currval(seq_ commodity);

表示返回当前的序列号,该序列号只要没有被使用,就不会变化,如果当前请求一直使用,那么不会再分配给其他的请求,因为该序列号已经分配给当前请求;

(2)select nextval(seq_ commodity);

表示返回下一个序列号后,系统优先给用户分配一个序列号,接着系统的下一个Sequence立刻加上设置的步长(increment 1),不论此序号用户是否使用;

就分享这么多啦,欢迎留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值