PostgreSQL之Sequence序列

来源:互联网 发布:呼死你软件淘宝有卖吗 编辑:程序博客网 时间:2024/06/08 02:25

PostgreSQL是一种关系型数据库,和Oracle、MySQL一样被广泛使用。平时工作主要使用的是PostgreSQL,所以有必要对其相关知识做一下总结和掌握,先总结下序列。
一、 Sequence序列
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中的值
SELECT 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
DROP SEQUENCE seq_commodity;

5、Sequence分配策略
调用select nextval(seq_ commodity);返回下一个序列号后,系统优先给用户分配一个序号,接着系统的次Sequence立刻加上设置的步长(increment 1),不论此序号用户是否使用;
调用select currval(seq_ commodity);返回当前的序列号,该序列号只要没有被使用,就不会变化,如果当前请求一直使用,那么不会再分配给其他的请求,因为该序列号已经分配给当前请求。

原创粉丝点击