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),不论此序号用户是否使用;
就分享这么多啦,欢迎留言讨论。