服务器之家

服务器之家 > 正文

PostgreSQL Sequence序列的使用详解

时间:2021-04-14 18:27     来源/作者:Frank_lyn

PostgreSQL是一种关系型数据库,和Oracle、MySQL一样被广泛使用。平时工作主要使用的是PostgreSQL,所以有必要对其相关知识做一下总结和掌握,先总结下序列

一、 Sequence序列

 

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

1、Sequence的创建

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

SQL语句如下:

?
1
2
3
4
5
6
7
CREATE SEQUENCE seq_commodity
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1
CYCLE; // 循环,表示到最大值后从头开始

2、查找Sequence中的值

?
1
SELECT nextval('seq_commodity');

这里nextval表示下一个值

3、修改 Sequence

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

alter sequence 的例子 (SQL语句)

?
1
2
3
4
5
ALTER SEQUENCE seq_commodity
 INCREMENT 10
 MAXVALUE 10000
 CYCLE
 NOCACHE ;

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

4、删除Drop Sequence

?
1
DROP SEQUENCE seq_commodity;

5、Sequence分配策略

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

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

补充:PostgreSQL 获取 SEQUENCE 列表

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

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

结束~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/omelon1/article/details/78798896

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部