加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

PostgreSQL Sequence序列的使用说明

发布时间:2021-10-11 10:17:54 所属栏目:评论 来源:互联网
导读:PostgreSQL是一种关系型数据库,和Oracle、MySQL一样被广泛使用。平时工作主要使用的是PostgreSQL,所以有必要对其相关知识做一下总结和掌握,先总结下序列。 一

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

 

1、Sequence的创建

 

例子:创建一个seq_commodity,最小值为1,最大值为9223372036854775807,从1开始,增量的步长为1,缓存为1的循环排序Sequence。

 

SQL语句如下:

 

 CREATE SEQUENCE seq_commodity

 INCREMENT 1

 MINVALUE 1

 MAXVALUE 9223372036854775807

 START 1

 CACHE 1

 CYCLE; // 循环,表示到最大值后从头开始

 

 

 

2、查找Sequence中的值

 

1SELECT nextval('seq_commodity');

 

这里nextval表示下一个值

 

3、修改 Sequence

 

用alter sequence来修改,除了start以外的所有sequence参数都可以被修改,

 

alter sequence 的例子 (SQL语句)

 

ALTER SEQUENCE seq_commodity

 INCREMENT 10

 MAXVALUE 10000

 CYCLE

 NOCACHE ;

 

 

 

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

 

4、删除Drop Sequence

 

1DROP SEQUENCE seq_commodity;

 

5、Sequence分配策略

 

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

 

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

 

补充:PostgreSQL 获取 SEQUENCE 列表

 

我就废话不多说了,大家还是直接看代码吧~

 

1SELECT "c"."relname" FROM "pg_class" "c" WHERE "c"."relkind" = 'S';

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读