1. 程式人生 > >PostgreSQL之Sequence序列(轉)

PostgreSQL之Sequence序列(轉)

本文轉載自:https://blog.csdn.net/omelon1/article/details/78798961

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);返回當前的序列號,該序列號只要沒有被使用,就不會變化,如果當前請求一直使用,那麼不會再分配給其他的請求,因為該序列號已經分配給當前請求。